鱼C论坛

 找回密码
 立即注册
查看: 1837|回复: 0

通过xlwings调用VBA,将选择文件的路径选择到excel

[复制链接]
发表于 2020-10-26 23:08:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 lengyue869 于 2020-11-10 07:54 编辑

請教如何實現以下功能

1>點擊Run按鈕將Entry中的路徑寫入到Excel B列中對應的單元格
2>File1,File2,File3  三个Lable的内容如何单独修改



                               
登录/注册后可看大图



http://ys-f.ys168.com/613967850/r55228L554KP35jRtMw6/vba.xlsm


import tkinter as tk
from tkinter.filedialog import *
import winreg
import xlwings as xw

root = tk.Tk()
root.geometry('850x400+300+100')
# iCount = int(input('請輸入文件個數:'))
iCount = 3
name_list = ['a', 'b', 'c', 'd','e','f','g']  # 定义对象名字列表

def get_desktop():
    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
                         r'Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders')
    return winreg.QueryValueEx(key,"Desktop")[0]
desPath=get_desktop()

#=====================================================================
def btn_run():
    app = xw.App(visible=True, add_book=False)
    wb_vba=app.books.open('vba.xlsm')
    sht_main=wb_vba.sheets['main']
    for i in range(1,iCount+1):
        sht_main.range(i+3,2).value='Entry中對應的文件路徑'

    # vba=app.macro('test')
    # vba.run()
#=====================================================================

class file_name():  # 定义类,用来创建循环对象
    def __init__(self):
        self.sFilePath = tk.StringVar()

    def btn_com(self):
        global desPath
        self.sFilePath.set(askopenfilename())
        # self.sFilePath.set(askopenfilename(initialdir=desPath))

for i in range(1, iCount + 1):
    name_list[i - 1] = file_name()  # 用对象名字列表内元素,创建循环对象
    tk.Label(text="File"+str(i),width=10,bd=8,
             font=('Arial',13)).grid(row=i-1,column=0)
    tk.Button(root, text='選擇文件',bd=2,font=('Arial',10),
              command=name_list[i - 1].btn_com).grid(row=i - 1, column=2)
    tk.Entry(root, textvariable=name_list[i - 1].sFilePath,
             width=70,font=('Arial',13)).grid(row=i - 1, column=1)

btnRun=tk.Button(text='    Run    ',font=('Arial',11),bg='green',fg='white',
                 command=btn_run)
btnRun.grid(row=i,column=1)

mainloop()


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-18 04:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表