我有多个文件,需要将数据转换为单个主文件,所有数据都放在一行中。
我在编程方面是一个完整的菜鸟,所以如果到目前为止我的代码没有任何意义,那么请随时改变它
我能够找到这个"将所有excel文件循环到一个文件夹中#34;代码来自www.TheSpreadsheetGuru.com代码工作得非常好,它将在文件夹中单独打开每个文件,然后关闭它,然后打开下一个文件并关闭它,直到它遍历该文件夹中的每个文件。
但是,我想插入一个"复制和粘贴数据"循环中的代码循环。所以需要发生的是,代码将打开" File1"在文件夹中,然后将数据复制并粘贴到"主文件"在A4单元格中。然后它将关闭" File1",然后打开" File2"并将数据复制到"主文件"在单元格A5中然后关闭" File2"。它将重复此操作,直到文件夹中的所有文件都已打开/关闭。
这是我现在的代码,但我无法获得复制和粘贴代码以使其正常工作。我很难弄清楚如何设置循环,代码将知道它当前在哪个文件上,并为它所粘贴的主文件的单元格设置计数器。
Sub LLoopAllExcelFilesInFolder()
'PURPOSE: To loop through all Excel files in a user specified folder and perform a set task on them
'SOURCE: www.TheSpreadsheetGuru.com
Dim wb As Workbook
Dim myPath As String
Dim myFile As String
Dim myExtension As String
Dim FldrPicker As FileDialog
'Optimize Macro Speed
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
'Retrieve Target Folder Path From User
Set FldrPicker = Application.FileDialog(msoFileDialogFolderPicker)
With FldrPicker
.Title = "March"
.AllowMultiSelect = False
If .Show <> -1 Then GoTo NextCode
myPath = .SelectedItems(1) & "\"
End With
'In Case of Cancelhow
NextCode:
myPath = myPath
If myPath = "" Then GoTo ResetSettings
'Target File Extension (must include wildcard "*")
myExtension = "*.xlsx"
'Target Path with Ending Extention
myFile = Dir(myPath & myExtension)
'Loop through each Excel file in folder
Do While myFile <> ""
'Set variable equal to opened workbook
Set wb = Workbooks.Open(Filename:=myPath & myFile)
'THIS IS MY COPY AND PASTE CODE (DOESN'T WORK)
Dim row As Integer
While row = 4
Workbooks("Filename:=myPath & myFile").Worksheets("Resin Log").cell("I5") = Workbooks("Workbook1.xlsm").Worksheets("Sheet1").Range("A" & row).Value
Next row
'Save and Close Workbook
wb.Close SaveChanges:=False
'Get next file name
myFile = Dir
Loop
'Message Box when tasks are completed
MsgBox "Task Complete!"
ResetSettings:
'Reset Macro Optimization Settings
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
可以做你正在谈论的事情。我建议,尝试直接在正在创建的文件中设置单元格值
targetworkbook.worksheets(1).Range("A1").value = sourceworkbook.Worksheets(1).Range("C4").value
而不是使用.Copy
&amp; .Paste
因此,如果宏需要一段时间才能运行,则您无法在其他应用程序中使用“复制/粘贴”。如果您仍然不确定该怎么做,请尝试在启用“录制宏”的情况下执行此操作。生成的代码需要调整,但会为您提供所需的大部分内容。
此外,请务必查看this link以避免在代码中使用其他内容。