【发布时间】:2016-11-03 20:52:16
【问题描述】:
我的问题有点奇怪...我在 Access VBA 中有代码。我想在其他 Excel 文件中运行两个宏。第一个宏运行没有问题,但是当 dubbger 获得第二个时,我得到一个运行时错误 1004:“无法运行宏 'prcPrepareFirstReport'。该宏在此工作簿中不可用或所有宏都被禁用。”
访问代码:
Private Sub cmdRaport_Click()
Dim pPath As String
Dim pWorkPath As String
Dim pExcel As Object
Dim pPathToSave As String
Dim pTargetPath As String
pPath = fncFilePicker()
pWorkPath = DLookup("[F_LINK]", "tblLinks", "[F_ID] = 1")
Set pExcel = CreateObject("Excel.Application")
pExcel.Workbooks.Open (pWorkPath)
pMacro = "prcPrepareFile"
pPathToSave = DLookup("[F_LINK]", "tblLinks", "[F_ID] = 2")
pExcel.Run pMacro, pPath, pPathToSave 'this macro is going fine
pMacro = "prcPrepareFirstReport"
pTargetPath = DLookup("[F_LINK]", "tblLinks", "[F_ID] = 5")
pExcel.Run pMacro, pTargetPath 'on this macro I'm given error 1004
pExcel.ActiveWorkbook.Close
pExcel.Quit
Set pExcel = Nothing
End Sub
Excel VBA 代码:
Public pSourceName As String
Sub prcPrepareFile(pPath As String, pPathToSave As String)
Dim pFileToPrepare As Workbook
Dim pSheet As Worksheet
Dim pLastRow As Long
Dim pName As String
Dim i As Long
With Application
.DisplayAlerts = False
.ScreenUpdating = False
End With
Set pFileToPrepare = Workbooks.Open(pPath)
Set pSheet = pFileToPrepare.Worksheets(1)
pSheet.Rows("1:3").Select
Selection.Delete Shift:=xlUp
pSheet.Rows("2:5").Select
Selection.Delete Shift:=xlUp
pLastRow = pSheet.Cells(pSheet.Rows.Count, "A").End(xlUp).Row
For i = 2 To pLastRow
If pSheet.Cells(i, 1).Value = "" Then
pSheet.Rows(i & ":" & i + 5).Select
Selection.Delete Shift:=xlUp
End If
Next i
pName = pFileToPrepare.Name
pName = pPathToSave & pName
Debug.Print pName
pFileToPrepare.SaveAs pName
pSourceName = pFileToPrepare.Name
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub
Sub prcPrepareFirstReport(pTargetPath As String)
Dim pSourceWorbook As Workbook
Dim pTargetWorkbook As Workbook
Set pSourceWorbook = Workbooks(pSourceName)
Set pTargetWorkbook = Workbooks.Open(pTargetPath)
End Sub
我试过这样的版本
pExcel.Application.Run pMacro
,但它不起作用......
我已经尝试只运行第二个宏并且它正在运行...
请帮忙。
【问题讨论】:
-
您似乎没有在第一个代码 (
Dim pTargetPath as String) 中定义 pTargetPath。添加它有什么不同吗? -
prcPrepareFile是否将工作簿保存为xlsx文件? -
@finjo,抱歉我忘记输入了。在普通代码中是这样。
-
@Comintern 是的,但是其他文件,不是代码所在的这个文件。
-
你能把那个
Sub的代码贴出来吗?我怀疑这就是问题所在。