我希望Bos和Dos选择之前在Bos提供的文件。
当我使用ADailyReport宏时,它会再次提示文件。
Sub Bos()
Dim filename__path As Variant
filename__path = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.XLSX), *.XLS", _
Title:="Select File To Be Opened")
If filename__path = False Then Exit Sub
Workbooks.Open Filename:=filename__path
Sheets("HSE").Select
Range("L23:M23").Select
Selection.Copy
Windows("Follow-up .xlsm").Activate
Sheets("BE803").Select
ActiveWindow.SmallScroll Down:=270
Range("B431").Select
ActiveSheet.Paste
End Sub
Sub Dos()
Dim filename__path As Variant
filename__path = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.XLSX), *.XLS", _
Title:="Select File To Be Opened")
If filename__path = False Then Exit Sub
Workbooks.Open Filename:=filename__path
Sheets("HSE").Select
Range("L24:M24").Select
Selection.Copy
Windows("Follow-up .xlsm").Activate
Sheets("BE803").Select
ActiveWindow.SmallScroll Down:=270
Range("D431").Select
ActiveSheet.Paste
End Sub
Sub ADailyReport()
Application.Run "'C:\Users\Follow-up .xlsm'!Bos"
Application.Run "'C:\Users\Follow-up .xlsm'!Dos"
End Sub
答案 0 :(得分:0)
您可以为Dos创建变量引用,只需在Bos中调用它,反之亦然 类似的东西:
Sub Bos()
'~~> rest of your code here for Bos
'~~> then call Dos
Dos filename_path
End Sub
另一方面,Dos应该设置为:
Sub Dos(mypath As Variant)
If mypath = False Then Exit Sub
Workbooks.Open mypath
'~~> rest of the code here
End Sub
这样,当执行Bos时,Dos会自动运行。
另一种方法是使用全局/公共变量 所以Bos和Dos仍然是独立运行的,但如果其中一个或另一个已经执行,它将不会提示该文件。
Option Explicit
Public filename_path As Variant
Sub Bos()
If IsEmpty(filename_path) Then
filename_path = Application.GetOpenFilename( _
FileFilter:="Excel Files (*.XLSX), *.XLS", _
Title:="Select File To Be Opened")
End If
If filename_path = False Then Exit Sub
'~~> Rest of your code here
End Sub
以与上述相同的方式设置Dos。 HTH。
值得注意的是,只要文件未关闭或者直到没有遇到任何错误才能使宏断开, Global / Public 变量仍然存在。因此,要加载不同的文件(加载第一个文件后),您需要先保存并关闭文件。或者,如果用户想要加载除存储在内存中的文件之外的其他文件,则可以添加其他查询。