gpt4 book ai didi

vba - 如何在VBA中打开并激活另一个工作簿?

转载 作者:行者123 更新时间:2023-12-02 17:31:48 24 4
gpt4 key购买 nike

我正在创建一个宏,我需要在 1 个文件(称为“Masterfile”)中运行它,它将在另一个文件(“SurveyReport”)上打开并执行该宏,然后给我一个消息框,显示“完成!”。

当我手动打开该文件并执行它时,我必须在 SurveyReport 文件上执行的代码工作正常。我需要从 MasterFile 打开 SurveyReport 的代码似乎也可以正常工作,我运行了以下代码,没有出现任何问题:

    Sub PivotTable()
'
' PivotTable Macro

Dim MasterFile As String

MasterFile = ActiveWorkbook.Name

Dim SurveyReport As String

SurveyReport = Application.GetOpenFilename("Excel files (*.xlsx), *xlsx", 1, "Please select the Survey Create Report file", , False)

Workbooks.Open (SurveyReport)


End Sub

但是,当我尝试激活 SurveyReport 文件以便开始执行其中的宏时,我收到“下标超出范围”错误。我尝试在上述 block 之后和在 SurveyReport 文件中执行的代码之前使用以下代码:

    Windows(SurveyReport).Activate

这不起作用,没有做到:

    ThisWorkbook.Activate

...仅具有激活 MasterFile 的效果。

SurveyReport 文件是一个 .xlsx 文件。我尝试将其保存为 .xls 文件并修改代码,但没有任何乐趣。我还尝试直接向其传递文件名(即 Windows("filename.xlsx").Activate),同样的问题。

最佳答案

ActiveWorkbook 正如其表面所述 - 代码运行时恰好处于事件状态的工作簿。
ThisWorkbook 始终是代码所在的工作簿。

您可以设置对特定工作簿的引用,而不仅仅是每次都使用它们的名称。名称可能会更改,或引用错误的对象......假设您有一个叫达伦的 friend 。每次你提到他,你都会提到他的名字。不认识达伦的人不知道你所说的世界上所有可用的达伦是哪一个。现在想象一下你的口袋里有一个达伦的小复制品......不,这是一个可怕的类比 - 它不会是一个复制品,它将是对真正的达伦的引用......无论如何,我离题了。

此代码设置对工作簿的引用,然后您可以在任何时候想要引用正确的工作簿时使用该引用:

Sub PivotTable()

Dim MasterFile As Workbook

Dim SurveyRptName As String
Dim SurveyReport As Workbook

Set MasterFile = ThisWorkbook '

SurveyRptName = Application.GetOpenFilename("Excel files (*.xlsx), *xlsx", 1, _
"Please select the Survey Create Report file", , False)
If SurveyRptName <> "False" Then
Set SurveyReport = Workbooks.Open(SurveyRptName)
End If

SurveyReport.Activate 'You don't need this line. It doesn't matter if
'the workbook is active, the code knows which one
'you're talking about in the next line.
MsgBox "This is " & SurveyReport.Name & _
" containing " & SurveyReport.Worksheets.Count & " sheets." & vbCr & _
"The value in cell A1 of the first sheet is " & _
SurveyReport.Worksheets(1).Range("A1")

End Sub

编辑:当然,如果您在选择文件时按“取消”,则 IF...THEN 代码后面的行将不会有可使用的引用并且您将得到一个对象变量或未设置 block 变量 - 如果您尚未成功打开调查报告文件,最好不要运行底部的代码。

关于vba - 如何在VBA中打开并激活另一个工作簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51482666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com