将工作表复制到多个其他工作表 - 对象问题?

时间:2018-01-11 07:51:25

标签: excel-vba vba excel

我是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

任何有助于教程的帮助/链接都将非常感谢!

1 个答案:

答案 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文件,所以他们只有一张表。