Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 从其他工作簿调用宏时出错_Vba_Excel - Fatal编程技术网

Vba 从其他工作簿调用宏时出错

Vba 从其他工作簿调用宏时出错,vba,excel,Vba,Excel,我试图从另一个工作簿调用宏,但一直出现以下错误 无法运行宏 'IMECM_To... 该宏可能在此工作簿中不可用,或者可能已禁用所有宏 我已确保宏名称拼写正确,并已确保宏拼写正确。 我在网上查过了,没有找到解决方法。 谢谢 这是密码 Sub move() Dim wb As Workbook Dim MacroFolder As String Dim MacroWb As String MacroFolder = "C:\Users\zhill\Desktop\macro learn\"

我试图从另一个工作簿调用宏,但一直出现以下错误

无法运行宏

'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

如果工作簿名称包含空格或某些其他特定字符,则必须使用单引号将名称括起来,如下所示:

Application.Run "'Book 1.xls'!MyMacroName"
来源:罗恩·德布林:


要确保在Excel中未禁用宏,可以转到:

文件
选项
信任中心
信任中心设置
宏设置
启用所有宏
代码看起来不错,可能需要进行一些调试以排除错误的文件名 按CTRL-G,将打开即时窗口

按如下所示键入debug.print命令,如果行“Exists?”后面有一个空格,则表示文件名或目录有问题

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
按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
子打印目录文件()
将myfile设置为字符串
将宏文件夹设置为字符串
MacroFolder=“C:\Users\zhill\Desktop\macro learn\”
myfile=Dir(宏文件夹&“*.xlsm”)”或**
当我的文件“”时执行此操作
调试。打印我的文件
myfile=Dir
环
端接头