如何将引用的工作表更改为变量?我希望它激活

时间:2019-09-19 08:38:42

标签: excel vba

我编写的宏-它从两个不同的电子表格中提取信息并格式化所有信息。这些电子表格每月都会更改。在记录此宏时,如何获得“ ACTIVATE”命令来引用我已经打开的工作表,而不是WAS打开的工作表?命令之一如下所示:

Windows("273517_0273517M190831_08_31_2019_Toll Detail.csv").Activate

我试图复制并粘贴几行代码,但是此站点拒绝了该代码,并指出该文件的格式不正确。由于它是功能齐全的宏的精确副本,因此我不知道它想要什么。

第4行中的“ ... Toll Detail.csv”文件需要作为变量,因为它每月更改一次。我的录制宏中多次引用此文件。我将需要能够以您建议的任何方式进入并更改它们中的每一个。我对VBA完全陌生,所以,请尽其所能。 :) 谢谢!

2 个答案:

答案 0 :(得分:0)

我建议在子程序的开头声明一个变量,就像这样:

Dim strFile As String
strFile = "273517_0273517M190831_08_31_2019_Toll Detail.csv"

在整个子级中,您可以引用该变量,因此在代码中存在工作簿名称的每种情况下,都应将其替换为strFile,如下所示:

Windows(strFile).Activate

这样,您只需为整个过程更新一次即可。 可能会有更优雅的解决方案,但为此需要更多有关用例的信息。

答案 1 :(得分:0)

您可以每次使用GetOpenFileName选择并打开文件。以下是供您参考的代码:

Sub OpenFile()
Dim myFile As String
Dim Wb As Workbook

myFile = Application.GetOpenFilename("CSV Files (*.csv), *.csv")

'Exit if no file selected
If myFile = "False" Then
    MsgBox "No file selected!"
    Exit Sub
End If

'Open the file
Set Wb = Workbooks.Open(myFile)
'Do what you want with the file here onward
'
'
'
End Sub