lengyue869 发表于 2020-10-26 23:08:56

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

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

請教如何實現以下功能

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


http://ys-f.ys168.com/613967847/kvQKMWs85426J742Q7/%E5%BE%AE%E4%BF%A1%E6%88%AA%E5%9B%BE_20201026230314.png


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")
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 = 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.btn_com).grid(row=i - 1, column=2)
    tk.Entry(root, textvariable=name_list.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()


页: [1]
查看完整版本: 通过xlwings调用VBA,将选择文件的路径选择到excel