我知道如果将文件映射粘贴到宏代码中,我可以打开工作簿并在同一工作簿中运行代码。
我想用一个打开的对话框来选择它。
此代码:
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
允许我通过打开的对话框选择文件,然后在新窗口中打开工作簿。
答案 0 :(得分:0)
语法看起来不对,但我很惊讶它没有生成错误信息。尝试将新打开的工作簿分配给变量,然后通过它引用它,例如:
Dim ImportBook as Workbook
Dim ExportBook as Workbook
Set ImportBook = Workbooks.Open (fileName)
Set ExportBook = Workbooks.Open ("import-sheets.xlsm")
然而,您正在做的是制作整个工作簿的副本并将其保存到新文件中,在这种情况下,可能有更好的方法来执行此操作,而不是一次只有一张。
这里的Workbook.SaveAs方法会更合适吗?