用于记住之前选择的文件的VBA代码

时间:2013-11-25 06:01:19

标签: excel-vba vba excel

我希望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

1 个答案:

答案 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 变量仍然存在。因此,要加载不同的文件(加载第一个文件后),您需要先保存并关闭文件。或者,如果用户想要加载除存储在内存中的文件之外的其他文件,则可以添加其他查询。