【问题标题】:How does this work - How does the vbs script know it should open the file?这是如何工作的 - vbs 脚本如何知道它应该打开文件?
【发布时间】:2020-10-08 12:34:56
【问题描述】:

我需要一个 vbs 脚本来打开一个.xlsm 文件,在其中运行一个宏并再次关闭该文件。

在网上我找到了一个完美运行的脚本。 麻烦的是,我不明白怎么做。

这是脚本:

Sub MacroExcel() 

  Dim ExcelApp 
  Dim ExcelFile


  Set ExcelApp = CreateObject("Excel.Application") 
  Set ExcelFile = ExcelApp.Workbooks.Open("D:\File1.xlsm") 
  
  ExcelApp.Visible = True   
  ExcelApp.Run "Macro1" 
  ExcelApp.Quit 

  Set ExcelFile = Nothing 
  Set ExcelApp = Nothing 

End Sub

这首先是如何打开文件的?据我了解,这一行:

Set ExcelFile = ExcelApp.Workbooks.Open("D:\File1.xlsm") 

将方法分配给变量ExcelFile。但是,ExcelFile 不再在代码中使用。

脚本如何知道文件实际上应该被打开?

【问题讨论】:

  • Open() 方法打开文件(即,它有效地打开工作簿)并返回对它的引用,该引用存储在 ExcelFile 中。文件一词的使用有点误导,更好的名称应该是 ExcelWorkbook。

标签: vbscript


【解决方案1】:

据我了解,这一行:

Set ExcelFile = ExcelApp.Workbooks.Open("D:\File1.xlsm")

分配一个 变量 ExcelFile 的方法

那是你理解错误的地方。它没有为变量ExcelFile分配方法,它分配执行方法ExcelApp.Workbooks.Open("D:\File1.xlsm")

结果

你看,当你让 Excel 打开一个文件时,它不仅打开 Excel 中的实际文件,它还返回一个 Workbook 类型的对象
正是这个工作簿对象存储在变量ExcelFile

现在你完全正确,在这个 sn-p 中没有使用实际的工作簿对象。因此,除了将结果分配给变量之外,他们还可以执行该方法并像这样忽略结果对象。

ExcelApp.Workbooks.Open "D:\File1.xlsm" 

【讨论】:

    猜你喜欢
    • 2017-01-28
    • 1970-01-01
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 2013-04-04
    相关资源
    最近更新 更多