我试过在任何地方寻找这个并且无法在任何地方找到它。
我有一个代码,我使用with语句来循环数据,我的问题是如何循环查看只有一个名为“Report”的特定页面,它始终是工作表中的第一个工作表。这是我没有的编码。
Set TargetFiles = Application.FileDialog(msoFileDialogOpen)
With TargetFiles
.Application.Worksheets(1).Activate
.AllowMultiSelect = True
.Title = "Multi-select target data files:"
.ButtonName = ""
.Filters.Clear
.Filters.Add ".xlsm files", "*.xlsm"
.Show
End With
我放入的部分
.Application.Worksheets(1).Activate
没有做我想做的事。基本上,这是一组更大的代码的一部分,这些代码循环通过用户选择的范围并复制和粘贴到新工作簿,只有在它们全部保存在正确的工作表上时才有效。我从这个问题线程中学到了整体编码: Copying worksheets from multiple workbooks into current workbook
所以有2个选项作为答案(我赞成两者)并且两者都有效但我想将每个部分组合起来。一个用户选择工作表,但要工作,他们都必须在正确的工作表上,另一方面,你必须将文件保存到特定的文件夹。我想让用户选择文件选项,但仍然根据特定工作表名称“报告”或工作表(1)等位置组合它们。
任何人都可以帮忙吗?
答案 0 :(得分:0)
打开工作簿后,遍历设置活动ws的每个工作簿。
Public Sub LoopOpenWorkbooks()
Dim wb As Workbook
Dim ws As Excel.Worksheet
'Loop though each workbook
For Each wb In Application.Workbooks
'Activate the workbook
wb.Activate
'Set the worksheet and activate it.
Set ws = ActiveWorkbook.Sheets("Report")
ws.Activate
'Now here you can loop through a user selected range and copies and pastes to a new workbook
Next wb
End Sub
或者您可以按索引设置工作表。
Set ws = Application.Worksheets(1)
答案 1 :(得分:0)
您似乎想要选择多个工作簿并在每个工作表的第一个工作表上工作。 msoFileDialogOpen
提供了一个名单列表;它实际上并没有将工作簿打开到当前的应用程序环境中。
Dim f As Long, TargetFiles As Object
Set TargetFiles = Application.FileDialog(msoFileDialogOpen)
With TargetFiles
.AllowMultiSelect = True
.Title = "Multi-select target data files:"
.ButtonName = ""
.Filters.Clear
.Filters.Add ".xlsm files", "*.xlsm"
.Show
For f = 1 To .SelectedItems.Count
Debug.Print .SelectedItems(f)
With Workbooks.Open(.SelectedItems(f))
With .Worksheets(1)
'work with the first worksheet in the open workbook
End With
.Close
End With
Next f
End With
有关将其用于工作簿/工作表/单元格范围的父级别的更多信息,请参阅With ... End With statement,以便您可以避免使用Worksheet.Activate method。