引用新打开的工作簿以在其上运行代码

时间:2017-02-13 03:49:43

标签: excel vba

我知道如果将文件映射粘贴到宏代码中,我可以打开工作簿并在同一工作簿中运行代码。

我想用一个打开的对话框来选择它。

此代码:

Option Explicit
Private Sub CommandButton1_Click()

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer, fd As Office.FileDialog

Set fd = Application.FileDialog(msoFileDialogFilePicker)

With fd

    .AllowMultiSelect = False

    .Title = "Please select the file."

    .Filters.Clear
    .Filters.Add "Excel 2003", "*.xls?"

    If .Show = True Then
        fileName = Dir(.SelectedItems(1))
    End If
End With

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Workbooks.Open (fileName)

For Each sheet In Workbooks(fileName).Worksheets
    total = Workbooks("import-sheets.xlsm").Worksheets.Count
    Workbooks(fileName).Worksheets(sheet.Name).Copy _
    after:=Workbooks("import-sheets.xlsm").Worksheets(total)
Next sheet

Workbooks(fileName).Close

Application.ScreenUpdating = True
Application.DisplayAlerts = True

允许我通过打开的对话框选择文件,然后在新窗口中打开工作簿。

1 个答案:

答案 0 :(得分:0)

语法看起来不对,但我很惊讶它没有生成错误信息。尝试将新打开的工作簿分配给变量,然后通过它引用它,例如:

Dim ImportBook as Workbook
Dim ExportBook as Workbook

Set ImportBook = Workbooks.Open (fileName)
Set ExportBook = Workbooks.Open ("import-sheets.xlsm")

然而,您正在做的是制作整个工作簿的副本并将其保存到新文件中,在这种情况下,可能有更好的方法来执行此操作,而不是一次只有一张。

这里的Workbook.SaveAs方法会更合适吗?