我被一个excel vba宏卡住了atm。
我喜欢做以下事情。
文件位于网络驱动器上。IE。
H:\Excel Files\LocationA\
在这个文件夹中有许多 Excel 文件,它们都与不同的数据相同。
我需要读出 2 个单元格值并将它们放入一个新的 Excel 文件中。
我需要 Cel 值而不是公式或格式。
所以 Excel 文件已关闭
我下面的脚本正在运行,但是。它在我认为打开和关闭excel文件的过程中崩溃。网络驱动器上可能存在一些延迟问题。
此外还有 2 个其他位置
H:\Excel Files\LocationB\
H:\Excel Files\LocationC\
如果我最终完成了 LocationA,我想复制其他 2 个位置的循环。所以也许我需要更多的变量。
Sub LoopAllExcelFilesInFolder()
Dim wb As Workbook
Dim myPathLiestal As String
Dim myPathMuttenz As String
Dim myPathReinach 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
myPathLocationA = "H:\Excel\LocationA\"
'Message Box when tasks are completed
MsgBox "Die Daten werden verarbeitet. Bitte haben sie einen Moment geduld"
'Target File Extension (must include wildcard "*")
myExtension = "*.xls*"
'Target Path with Ending Extention
myFile = Dir(myPathLocationA & myExtension)
'Set Dest Path with Ending Extention
Set wsDest = Workbooks("Test.xlsm").Worksheets("2019")
'Loop through each Excel file in folder
Do While myFile <> ""
'Set variable equal to opened workbook
Set wb = Workbooks.Open(Filename:=myPathLocationA & myFile)
DestLastRowA = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row
'DestLastRowB = wsDest.Cells(wsDest.Rows.Count, "B").End(xlUp).Offset(1).Row
'Mitarbeiter Namen werden aus der Zelle Q1 kopiert
wb.Worksheets("2019").Range("Q1").Copy
wsDest.Range("A" & DestLastRowA).PasteSpecial xlPasteValues
'Mitarbeiter Stundenkontigent werden aus der Zelle W8 kopiert
wb.Worksheets("2019").Range("W8").Copy
wsDest.Range("B" & DestLastRowA).PasteSpecial xlPasteValues
'Save and Close Workbook
wb.Close SaveChanges:=True
Application.CutCopyMode = False 'Clear Clipboard
'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