|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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()
|
|