我编写的宏-它从两个不同的电子表格中提取信息并格式化所有信息。这些电子表格每月都会更改。在记录此宏时,如何获得“ ACTIVATE”命令来引用我已经打开的工作表,而不是WAS打开的工作表?命令之一如下所示:
Windows("273517_0273517M190831_08_31_2019_Toll Detail.csv").Activate
我试图复制并粘贴几行代码,但是此站点拒绝了该代码,并指出该文件的格式不正确。由于它是功能齐全的宏的精确副本,因此我不知道它想要什么。
第4行中的“ ... Toll Detail.csv”文件需要作为变量,因为它每月更改一次。我的录制宏中多次引用此文件。我将需要能够以您建议的任何方式进入并更改它们中的每一个。我对VBA完全陌生,所以,请尽其所能。 :) 谢谢!
答案 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