3

我知道可以使用 Excel 宏来执行此操作,请参阅:Programmatically extract macro (VBA) code from Word 2007 docs,但我在这里想要做的是使用 VB6 来制作一个执行相同操作的应用程序。

我在如何指向 Excel 工作簿(thisworkbook.VBproject在上面的示例中使用)时遇到问题。

是否可以从 hd 中选择任何 .xls 文件,例如c:\try.xls,提取/显示其宏?请指教!

4

3 回答 3

2

设置对 Microsoft Excel 12.0 对象库(或所需的任何版本)的引用并使用工作簿的 VBProject.VBComponents 集合,例如

Sub ExportCode()
  Dim app As Excel.Application
  Set app = New Excel.Application

  Dim wb As Excel.Workbook
  Set wb = Excel.Application.Workbooks.Open("C:\Book2.xls")

  Dim strExt As String

  Dim VBComp As Object
  For Each VBComp In wb.VBProject.VBComponents
    Select Case VBComp.Type
      Case 2  ' Class module
        strExt = ".cls"
      Case 3  ' Form
        strExt = ".frm"
      Case 1  ' Standard module
        strExt = ".bas"
      Case 100  ' Document?
        strExt = ".cls"
      Case Else
        Stop  ' What else is there?
        strExt = ".cls"
    End Select

    VBComp.Export "C:\" & VBComp.Name & strExt
  Next
  wb.Close False
  app.Quit

End Sub
于 2009-01-21T08:49:40.907 回答
1

以下行:

Set wb = Excel.Application.Workbooks.Open("C:\Book2.xls")

应该

Set wb = app.Workbooks.Open("C:\Book2.xls")
于 2009-02-03T23:03:09.540 回答
1

VbaDiff可以直接从 Excel 文件中读取 Excel 宏,完全按照您描述的方式。如果您需要编程访问,可以使用带有 API 的企业版。你可以用这个做一些非常有趣的事情,就像在这些例子中一样。

完全披露——我制造了这个产品。我不断遇到与 Dean 遇到的类似问题,并决定是时候一劳永逸地解决它了!

于 2011-05-05T15:45:16.620 回答