Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 是否通过一个启用宏的工作簿一次一个地处理多个Excel工作簿?_Python_Excel_Python 3.x_Vba_Win32com - Fatal编程技术网

Python 是否通过一个启用宏的工作簿一次一个地处理多个Excel工作簿?

Python 是否通过一个启用宏的工作簿一次一个地处理多个Excel工作簿?,python,excel,python-3.x,vba,win32com,Python,Excel,Python 3.x,Vba,Win32com,好的,我有一个工作簿,它处理所有导出工作簿中的数据。我需要获取每个新的导出工作簿,并按提交时的时间顺序逐个运行处理工作簿,然后将完成的工作簿重命名为原始名称 我有一个脚本,可以通过处理书籍运行导出,并将其导出到完成的书籍。但我似乎不知道如何将上传的工作表排成队列,一次浏览一张,并在完成的书中保留原始工作表名称。下面是gui和处理脚本的代码 如果有人能给我指出正确的方向,我将不胜感激 #gui from tkinter import filedialog from tkinter import *

好的,我有一个工作簿,它处理所有导出工作簿中的数据。我需要获取每个新的导出工作簿,并按提交时的时间顺序逐个运行处理工作簿,然后将完成的工作簿重命名为原始名称

我有一个脚本,可以通过处理书籍运行导出,并将其导出到完成的书籍。但我似乎不知道如何将上传的工作表排成队列,一次浏览一张,并在完成的书中保留原始工作表名称。下面是gui和处理脚本的代码

如果有人能给我指出正确的方向,我将不胜感激

#gui
from tkinter import filedialog
from tkinter import *
import wx
import shutil

class MyFrame(wx.Frame):
    def __init__(self):
        super().__init__(parent=None, title='BIMgen Employee Portal')
        panel = wx.Panel(self)
        my_sizer = wx.BoxSizer(wx.VERTICAL)
        my_btn = wx.Button(panel, label='Select Export')
        my_btn.Bind(wx.EVT_BUTTON, self.on_press)
        my_sizer.Add(my_btn, 0, wx.ALL | wx.CENTER, 5)
        panel.SetSizer(my_sizer)
        self.Show()

    def on_press(self, event):
        root = Tk()
        root.filename =  filedialog.askopenfilename(initialdir = "/",title = "Select file",filetypes = (("jpeg files","*.jpg"),("all files","*.*")))
        print (root.filename)
        print(print (root.filename))
        shutil.copy(root.filename, "C:/Users/tyler/Desktop/Beef Web/Queue")
        wx.MessageBox(root.filename, 'Export Uploaded & Queued',
            wx.OK | wx.ICON_INFORMATION)

if __name__ == '__main__':
    app = wx.App()
    frame = MyFrame()
    app.MainLoop()

解决了。这是我使用的代码。只是一个简单的for循环

import win32com.client
import openpyxl
from openpyxl import load_workbook
import shutil
import os, subprocess

for filename in os.listdir(input):
   xl=win32com.client.Dispatch('Excel.Application')
   print("Getting file....")
   ini=xl.Workbooks.Open(input + '/' + filename)
   print("Complete.")
   print("Uploading Data To input sheet....")
   ini.Sheets('Sheet1').Range('A2:K100000').Copy()
   EXP.Sheets('Export').Paste(EXP.Sheets('Export').Range('A2'))
   print("Complete.")
   CopyIn_run_macros()
   print("Adding sheets to upload....")
   ini.Close(True)
   wb = load_workbook(input + '/' + filename)
   wb.create_sheet("E1")
   wb.create_sheet("231")
   wb.create_sheet("BIMgen")
   wb.save(input + '/' + filename)
   del xl
   xl=win32com.client.Dispatch('Excel.Application')
   ini=xl.Workbooks.Open(input + '/' + filename)
   print("Complete.")
   print("Exporting BeefCake data to upload....")
   FIN.Sheets('E1').Range('A1:T100000').Copy()
   ini.Sheets('E1').Paste(ini.Sheets('E1').Range('A1'))
   FIN.Sheets('BIMgen').Range('A1:H100000').Copy()
   ini.Sheets('BIMgen').Paste(ini.Sheets('BIMgen').Range('A1'))
   FIN.Sheets('231').Range('A1:AG100000').Copy()
   ini.Sheets('231').Paste(ini.Sheets('231').Range('A1'))
   ini.Close(True)
   print("Complete.")
   print("Moving Upload to Output")
   shutil.move(input + '/' + filename, output)
   print("Complete.")
import win32com.client
import openpyxl
from openpyxl import load_workbook
import shutil
import os, subprocess

for filename in os.listdir(input):
   xl=win32com.client.Dispatch('Excel.Application')
   print("Getting file....")
   ini=xl.Workbooks.Open(input + '/' + filename)
   print("Complete.")
   print("Uploading Data To input sheet....")
   ini.Sheets('Sheet1').Range('A2:K100000').Copy()
   EXP.Sheets('Export').Paste(EXP.Sheets('Export').Range('A2'))
   print("Complete.")
   CopyIn_run_macros()
   print("Adding sheets to upload....")
   ini.Close(True)
   wb = load_workbook(input + '/' + filename)
   wb.create_sheet("E1")
   wb.create_sheet("231")
   wb.create_sheet("BIMgen")
   wb.save(input + '/' + filename)
   del xl
   xl=win32com.client.Dispatch('Excel.Application')
   ini=xl.Workbooks.Open(input + '/' + filename)
   print("Complete.")
   print("Exporting BeefCake data to upload....")
   FIN.Sheets('E1').Range('A1:T100000').Copy()
   ini.Sheets('E1').Paste(ini.Sheets('E1').Range('A1'))
   FIN.Sheets('BIMgen').Range('A1:H100000').Copy()
   ini.Sheets('BIMgen').Paste(ini.Sheets('BIMgen').Range('A1'))
   FIN.Sheets('231').Range('A1:AG100000').Copy()
   ini.Sheets('231').Paste(ini.Sheets('231').Range('A1'))
   ini.Close(True)
   print("Complete.")
   print("Moving Upload to Output")
   shutil.move(input + '/' + filename, output)
   print("Complete.")