【问题标题】:Calling macro from another workbook error从另一个工作簿调用宏错误
【发布时间】:2018-08-29 16:50:09
【问题描述】:

我正在尝试从另一个工作簿调用宏,但我不断收到以下错误。

无法运行宏

'IMECM_To... 

该工作簿中的宏可能不可用,或者所有宏都可能被禁用。

我已确保宏名称拼写正确,并且已确保宏拼写正确。
我在网上查看过,但无法弄清楚如何解决这个问题。
谢谢

这里是代码

Sub move()

Dim wb As Workbook
Dim MacroFolder As String
Dim MacroWb As String

MacroFolder = "C:\Users\zhill\Desktop\macro learn\"
MacroWb = "IMECM_To_LDW_CSV_Format-20151023-for-2015Q3-for-udf-version-13.0.015.xlsm"

Set wb = Workbooks.Open(MacroFolder & MacroWb)

wb.Sheets("ALFA to Corp CSV").Cells(13, 2) = ThisWorkbook.Sheets("sheet1").Range("IntexFolderList").Cells(1, 1)
wb.Sheets("ALFA to Corp CSV").Cells(14, 2) = ThisWorkbook.Sheets("sheet1").Range("OutputFolderList").Cells(1, 1)
wb.Sheets("ALFA to Corp CSV").Cells(9, 9) = ThisWorkbook.Sheets("sheet1").Range("RunNbr").Cells(1, 1)

wb.Sheets("ALFA to Corp CSV").Application.Run (MacroWb & "!ALFAtoCorpCsvFormat")

End Sub

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    如果工作簿名称包含 空格 或其他一些特殊字符,则需要用单引号将名称括起来,如下所示:

    Application.Run "'Book 1.xls'!MyMacroName"
    

    来源:Ron deBruin:How do I use Application.Run in Excel?


    为确保 Excel 中不会禁用宏,您可以访问:
    File>Options>Trust Center>Trust Center Settings>Macro Settings>Enable All Macros

    【讨论】:

      【解决方案2】:

      代码看起来不错,可能您需要进行一些调试以排除错误的文件名 按 CTRL G ,这将打开您的即时窗口

      输入 debug.print 命令如下,如果“存在?”行后面是一个空格,这意味着您的文件名或目录有问题。

      按 F8 代替 F5 逐行运行代码

      Sub move()
      
      Dim wb As Workbook
      Dim MacroFolder As String
      Dim MacroWb As String
      
      MacroFolder = "C:\Users\zhill\Desktop\macro learn\"
      MacroWb = "IMECM_To_LDW_CSV_Format-20151023-for-2015Q3-for-udf-version-13.0.015.xlsm"
      
      Debug.Print MacroFolder & MacroWb
      Debug.Print "Exists?", Dir(MacroFolder & MacroWb)
      
      Set wb = Workbooks.Open(MacroFolder & MacroWb)
      
      wb.Sheets("ALFA to Corp CSV").Cells(13, 2) = ThisWorkbook.Sheets("sheet1").Range("IntexFolderList").Cells(1, 1)
      wb.Sheets("ALFA to Corp CSV").Cells(14, 2) = ThisWorkbook.Sheets("sheet1").Range("OutputFolderList").Cells(1, 1)
      wb.Sheets("ALFA to Corp CSV").Cells(9, 9) = ThisWorkbook.Sheets("sheet1").Range("RunNbr").Cells(1, 1)
      
      wb.Sheets("ALFA to Corp CSV").Application.Run (MacroWb & "!ALFAtoCorpCsvFormat")
      
      End Sub
      

      如果您似乎仍然无法解决问题 运行此代码以查看 excel 在您的目录中提取了哪些文件。

      Sub PrintDirectoryFiles()
      
      Dim myfile As String
      Dim MacroFolder As String
      
      MacroFolder = "C:\Users\zhill\Desktop\macro learn\"
      myfile = Dir(MacroFolder & "*.xlsm")  'or *.*
      
      Do While myfile <> ""
          Debug.Print myfile
          myfile = Dir
      Loop
      
      
      
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多