我正在一个项目中,它将找到一个csv文件,将其打开,拉出特定的列,然后将其转置到打开的工作簿中的特定位置,然后移至列表中的下一个文件名。当前,该代码在前两个循环中有效,但是在下面的代码中被卡在“ Workbooks(fname).Activate”上。我已经知道由于ActiveCell.Offset一旦通过第二个循环运行,就会发生该错误,但是我无法弄清楚为什么它会在前两个循环中起作用然后停止。任何帮助将不胜感激!
Sub x1853_Get_ALL_Dim3()
Dim fname As String
Dim Name As String
Dim Path As String
Dim Path2 As String
Sheets("Sheet1").Select
Range("A6").Select
Do Until ActiveCell.Value = ""
fname = Path2 & ActiveCell.Value
Path = ThisWorkbook.Path
Path2 = Path & "\Pull\"
ChDrive Path2
ChDir Path2
Name = ThisWorkbook.Name
Application.ScreenUpdating = False
Workbooks.Open Filename:=fname, Local:=True
ActiveWindow.SmallScroll Down:=0
Range("B3:B300").Select
ActiveWindow.SmallScroll Down:=-15
Selection.Copy
Workbooks(Name).Activate
ActiveCell.Offset(0, 2).Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Workbooks(fname).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close SaveChanges:=False
ActiveCell.Offset(0, -2).Range("A1").Select
ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:1)
size_t
返回您应该捕获的工作簿引用。更改:
Workbooks.Open
到
Workbooks.Open Filename:=fname, Local:=True
,然后引用Dim wb As Workbook
Set wb = Workbooks.Open(Filename:=fname, Local:=True)
而不是wb
。
也许更重要的是,您应该看到How to avoid using Select并相应地修改代码。