我的问题有点奇怪......我在Access VBA中有代码。在那里我想在其他Excel文件中运行两个宏。第一个宏运行没有问题,但是当dubbger获得第二个时,我得到运行时错误1004:“无法运行宏'prcPrepareFirstReport'。宏无法在此worbook中使用,或者所有宏都被禁用。Excel中的第二个宏不运行
访问的代码:
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
,但它不工作...
我试过运行这第二个宏,它是...
请帮助。
看起来你没有在第一个代码中定义pTargetPath('Dim pTargetPath as String')。添加这些有什么区别吗? – finjo
'prcPrepareFile'是否将工作簿保存为'xlsx'文件? – Comintern
@finjo,对不起,我忘了输入它。在正常的代码中。 – Gadziu