在另一个excel文件上执行宏

时间:2016-08-10 21:31:01

标签: excel vba

我有以下宏 (宏比使用单元格B4的值重命名工作表,然后为每个工作表创建一个工作簿。)

Sub RenameTabs()
'UpdatebyTony
For x = 1 To Sheets.Count
If Worksheets(x).Range("B4").Value <> "" Then
Sheets(x).Name = Worksheets(x).Range("B4").Value
End If
Next
Dim xPath As String
xPath = Application.ActiveWorkbook.Path
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each xWs In ThisWorkbook.Sheets
    xWs.Copy
    Application.ActiveWorkbook.SaveAs Filename:=xPath & "\" & xWs.Name & ".xls"
    Application.ActiveWorkbook.Close False
Next
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

但这意味着我必须在每个excel文件中复制宏并运行它。

我希望能够运行de macro并打开一个对话框,要求我选择要重命名工作表并分开的excel文件?这可能吗?

我对VBA知之甚少

1 个答案:

答案 0 :(得分:1)

  1. 从FileDialog获取您喜欢的工作簿的路径以执行宏。您可以使用
  2.   

    Application.FileDialog

    https://msdn.microsoft.com/en-us/library/office/ff836226.aspx

    1. 打开工作簿并为其设置参考。
    2.   

      设置wb = Application.Workbooks.Open(文件路径)

      1. 在您当前的子 RenameTabs 上,将 Application.ActiveWorkbook ThisWorkBook 替换为wb。此外,您需要正确引用表格,工作表,...到wb。或者,您应该确保wb是ActiveWorkbook (wb.Activate)(如果在处理时切换到另一个excel文件,则可以破解代码)