首页 > 解决方案 > 在工作簿之间移动工作表的问题

问题描述

我正在研究一个宏,该宏会将工作表从选定的 Excel 工作表移动到已加载宏的文档中。

我在实际让工作表移动时遇到问题,我不断收到下标超出范围的错误,我不确定为什么

到目前为止,我已经仔细阅读了 stackoverflow 和其他一些资源。我尝试过使用.sheets/ workbook(workbookname).worksheets(1).copy...等等。

Sub runEXCEL()

dim wb1 as workbook, wb2 as workbook
dim fd as filedialog
dim shtpath as string
dim ws as worksheet


Set fd = Application.FileDialog(msoFileDialogFilePicker)

If fd.Show = True Then
    If fd.SelectedItems(1) <> vbNullString Then
        shtpath = fd.SelectedItems(1)
    End If
Else
    End
End If

set wb1 = workbooks.open("c:\users\username\documents\yestbook.xlsm", true, false
set wb2 = workbooks.open(shtpath)
set ws = wb2.worksheets(1)
ws.name = "testname"
ws.worksheets(1).copy after:=wb1.sheets(1)
'xl.Application.Run "yestbook.xlsm!findCellAddress"

End Sub

理想情况下,我想将选定工作簿中的工作表复制到我的预定义工作簿中。

标签: excelvba

解决方案


没有必要创建额外的 Excel 进程(实际上,这可能是问题的原因)。您还应该对所有工作表访问使用工作簿和工作表变量,并避免像Sheets("testname").

尝试以下方式:

Dim wb as workbook, ws as worksheet, wb2 as workbook, ws2 as worksheet

Set wb = Workbooks.Open(mysheetpath1)
Set ws=wb.Worksheets(1)

set wb2=Workbooks.Open(mysheetpath2)
set ws2=wb2.Worksheets(1)
ws2.Copy after:=ws

推荐阅读