Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将文件路径创建为要跨两个宏使用的全局变量_Vba_Excel - Fatal编程技术网

Vba 将文件路径创建为要跨两个宏使用的全局变量

Vba 将文件路径创建为要跨两个宏使用的全局变量,vba,excel,Vba,Excel,我有两个宏,宏1和宏2,它们都在一个excel文件中,只保存宏。宏1使用FilePath1=Application.GetOpenFilename()打开文件1并进行一些计算。宏2将文件1中的计算与另一个文件(文件2)进行比较,该文件是使用FilePath2=Application.GetOpenFilename()打开的 我在引用宏2中的文件1时遇到问题,因为我需要激活文件1才能正确进行比较。最好将文件1的文件路径作为一个可以跨子例程访问的全局变量。我该怎么做?我试过了 Public File

我有两个宏,宏1和宏2,它们都在一个excel文件中,只保存宏。宏1使用
FilePath1=Application.GetOpenFilename()
打开文件1并进行一些计算。宏2将文件1中的计算与另一个文件(文件2)进行比较,该文件是使用
FilePath2=Application.GetOpenFilename()
打开的

我在引用宏2中的文件1时遇到问题,因为我需要激活文件1才能正确进行比较。最好将文件1的文件路径作为一个可以跨子例程访问的全局变量。我该怎么做?我试过了

Public FilePath1 As String
然后在后面的宏2中

Workbooks(FilePath1).Activate

您可以创建包含全局变量的模块,并将其包含在模块中:

Public Const FilePath1 As String = ".../..."

然后,您可以在代码中的任何位置使用
FilePath1

如果您没有经过闪电般的快速响应时间,那么使用
SaveSetting
GetSetting
将数据存储在注册表的
HKEY\U CURRENT\U USER\Software\VB和VBA程序设置
区域如何?但这将是持久性的,因此,除非您希望它永远存储在计算机上,否则您将希望在完成后擦除它。那么您是一次执行两个宏吗?如果是工作簿,则使用在调用第二个宏时提供的变量。像
Macro2(wb作为工作簿)
@CLR-这个解决方案看起来很有趣,你能写吗?我可以@vityta,但老实说,快速搜索
vba GetSetting
会告诉你如何使用这个命令。它是一行程序来存储它,一行程序来读取它。@CLD-谢谢,我觉得它有点复杂,比如创建新的注册表项等等。