目标:
来源:
我已经在互联网上搜索了不同的代码,但还没有找到完成所有这些的代码,我确信它在某个地方。我发现了几个相似的不同 Stack 页面,并尝试将它们组合起来。
完整代码:
Sub OpeningFiles()
Dim SelectedFiles As FileDialog
Dim NumFiles As Long, FileIndex As Long
Dim TargetBook As Workbook
Dim Path As String
'prompt user to select a file or multiple files
Set SelectedFiles = Application.FileDialog(msoFileDialogOpen)
With SelectedFiles
.AllowMultiSelect = True
.Title = "Pick the files you'd like to consolidate:"
.ButtonName = ""
.Filters.Clear
.Filters.Add ".xls files", "*.xls"
.Show
End With
'check to see if user clicked cancel
If SelectedFiles.SelectedItems.Count = 0 Then Exit Sub
'start the loop over each file
NumFiles = SelectedFiles.SelectedItems.Count
For FileIndex = 1 To NumFiles
'set a reference to the target workbook
Set TargetBook = Workbooks.Open(SelectedFiles.SelectedItems(FileIndex))
'consolidate
Do While TargetBook <> ""
Set Path = TargetBook.Path
Workbooks.Open TargetBook:=Path & TargetBook, ReadOnly:=True
With ActiveWorkbook
.Worksheets(1).Copy after:=ThisWorkbook.Sheets(1)
ThisWorkbook.Sheets(2).Name = .Name
End With
Workbooks(TargetBook).Close
TargetBook = Dir()
Loop
TargetBook.Close SaveChanges:=False
Next FileIndex
End Sub
问题:Do While TargetBook <> ""
Set Path = TargetBook.Path
Workbooks.Open TargetBook:=Path & TargetBook, ReadOnly:=True
当我组合代码时这里出了点问题,我不确定是什么。我想我需要引用所选文件的文件路径,但我不知道如何设置此代码的方式。我在 Set Path
上收到对象所需错误.我什至不确定是否需要这样做,或者是否有其他方式来构建 Workbooks.Open TargetBook:=Path & TargetBook, ReadOnly:=True
它不需要路径对象。
最佳答案
来自@SJR 的评论:像这样 -
'...
NumFiles = SelectedFiles.SelectedItems.Count
For FileIndex = 1 To NumFiles
'open workbook for a "With" block
With Workbooks.Open(SelectedFiles.SelectedItems(FileIndex))
.Worksheets(1).Copy after:=ThisWorkbook.Sheets(1)
ThisWorkbook.Sheets(2).Name = .Name
.Close False 'no save
End With
Next FileIndex
'...
关于excel - 选择多个工作簿,将每个工作簿中的第一个选项卡合并到同一工作簿中的新选项卡,使用文件名重命名选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63962252/