我是VBA的初学者,我正在尝试将工作簿中的工作表复制并粘贴到多个其他工作簿中。后面的工作簿基本上具有相同的文件名(增加1)。所有工作簿目前都已开放
我一直收到错误提示“对象变量或未设置块变量”。但我不明白为什么我宣称“名字”或“wb”的方式是错误的。
我已经看到很多在线帖子通过打开的工作簿进行迭代,但是我不能这样做,因为我正在从一个打开的工作簿中复制一些东西。
Sub CopyWorkbook()
Dim i As Integer, s As String
Dim sh As Workbook, wb As Workbook, names As Worksheet
Set sh = Workbooks("schools.xlsx")
Set names = sh.Sheets("name")
For i = 6 To 15
If i <= 8 Then
s = "0" & i & "-0" & (i + 1) & "-_Year_data"
ElseIf i = 9 Then
s = "0" & i & "-" & (i + 1) & "-_Year_data"
Else
s = i & "-" & (i + 1) & "-_Year_data"
End If
Set wb = Workbooks(s & ".csv")
错误发生在第一行:
names.Copy After:=wb.Sheets(wb.Sheets.Count)
Next i
End Sub
任何有助于教程的帮助/链接都将非常感谢!
答案 0 :(得分:0)
我已经看到很多在线帖子在开放的工作簿中进行迭代,但我无法做到这一点,因为我正在从其中一个打开的工作簿中复制内容。
你可以添加一个if
For each wb in workbooks
IF Not wb.name = thisworkbook.name and wb.name <> "schools.xlsx" then
Workbooks("schools.xlsx").Sheets("name").copy _
after := wb.sheets(wb.worksheets.count)
End IF
Next wb
围绕您的代码,允许您遍历所有打开的工作簿,但托管代码的工作簿除外
编辑:我刚刚注意到你正在处理csv文件,所以他们只有一张表。