我不懂 VBA,但我需要编写一个宏来优化我的工作。 我正在寻找我的代码来循环遍历文件并将每个文件中的同一列复制/粘贴到 Excel 工作簿(逐列)。这是我到目前为止所拥有的(请注意,我在文件名中添加了“i”):
Sub NewMacro()
For i = 0 To 99
Workbooks.OpenText Filename:= _
"C:\User\Folder\file_up000i.txt", _
Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Range("A3").Select
Selection.Copy
With ActiveWindow
.Top = 6.25
.Left = 53.5
End With
Windows("Book1").Activate
With ActiveWindow
.Top = 40.75
.Left = 13
End With
Range("B1").Select
ActiveSheet.Paste
Windows("file_up000i.txt").Activate
Range("C26").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Windows("Book1").Activate
Range("B2").Select
ActiveSheet.Paste
Windows("file_up000i.txt").Activate
With ActiveWindow
.Top = 4
.Left = -75.5
End With
ActiveWindow.Close
Next i
End Sub
显然这不起作用,但我不知道还能怎么做。非常感谢您的帮助!
最佳答案
假设您的文件名为 file_up0000.txt
、file_up0001.txt
... file_up0099.txt
这是宏的重构
Sub NewMacro()
Dim i As Long
Dim shTxt As Worksheet
Dim shDest As Worksheet
Dim TxtName As String
Set shDest = ActiveSheet
For i = 0 To 99
TxtName = "file_up" & Format(i, "0000")
Workbooks.OpenText Filename:= _
"C:\User\Folder\" & TxtName & ".txt", _
Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), _
TrailingMinusNumbers:=True
Set shTxt = Workbooks(TxtName & ".txt").Worksheets(TxtName)
shTxt.[A3].Copy shDest.[B1]
shTxt.Range(shTxt.[C26], shTxt.Range("C26").End(xlDown)).Copy shDest.[B2]
shTxt.Parent.Close False
Next i
End Sub
关于vba - Excel宏: for loop file to file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7933985/