Ошибка VBA Application.Run (макрос может быть недоступен в этой книге или все макросы могут быть отключены) - PullRequest
0 голосов
/ 28 января 2020

Новый вопрос:

На мой оригинальный вопрос дан ответ, и решение в порядке. Однако это привело к другому вопросу. Вот поток процесса:

macroFile1 Sub1 (вызывает macroFile2 Sub3 и передает аргументы) -> macroFile2 Sub3 (выполняет некоторый процесс и, как ожидается, вернет несколько значений в macroFile1 Sub1)

macroFile1 Sub1 is в состоянии вызвать macroFile2 Sub3, но macroFile2 Sub3 не может возвращать значения. Я пробовал следующие методы:

method1:

'(macroFile1)
returnCodes = Application.Run("'" & macroFileName & "'!pasteCapture", _
thisWorkbookName, selectedFile, cmntText, workingSheet, cmntRowNum, cmntColNum, imgRowNum, imgColNum, size, clrTyp)

Ошибка при выполнении: Ошибка компиляции: Невозможно присвоить массиву

method2:

'(macroFile1)          
Sub1 
'(This sub is going to call macroFile2 Sub3, and macroFile2 Sub3 is going to do some process, and then return values to the following Sub2.)

Application.Run "'" & macroFileName & "'!pasteCapture", _
thisWorkbookName, selectedFile, cmntText, workingSheet, cmntRowNum, cmntColNum, imgRowNum, imgColNum, size, clrTyp
'thisWorkbookName is the absolute path of the file containing macroFile1. I am passing this to macroFile2 Sub3 so that I can call macroFile1 Sub2 from macroFile2 Sub3.

End Sub

Sub2 
'(I wrote this sub so that I can receive return codes from macroFile2 Sub3. This sub is right below macroFile1 Sub1.)

Sub getReturnCodes(extError, fileNotFound, opnError, worksheetNotFound, rowNotNumeric, rowOutOfScope, colNotNumeric, colOutOfScope, sizeNotNumeric, sizeOutOfScope, incorrectClrTyp, success)

If success = 0 Then
    MsgBox "Successful", vbOKOnly
Else
    MsgBox "Error", vbOKOnly
End If

End Sub

'(macroFile2)
Sub3 
'(This sub will receive multiple arguments from macroFile1 Sub1, process them, and call macroFile1 Sub2 to pass multiple return values.)

'Some process...

Application.Run "'" & calledBy & "'!getReturnCodes", _
extError, fileNotFound, opnError, worksheetNotFound, rowNotNumeric, rowOutOfScope, colNotNumeric, colOutOfScope, sizeNotNumeric, sizeOutOfScope, incorrectClrTyp, success

End Sub

Ошибка при выполнении: макрос может быть недоступен в этой книге или все макросы могут быть отключены

Пожалуйста, помогите. Я хочу передать несколько значений в качестве возвращаемых значений в macroFile1. Мне разрешено передавать их либо в Sub1, либо в Sub2.

Исходный вопрос:

Я получаю сообщение об ошибке при вызове макроса из другого файла макроса. Я видел много подобных постов и пробовал предложенные решения; однако, я все еще получаю сообщение об ошибке.

Вот код:

'The following program is supposed to call another program

Sub screenCapture_Click()

Dim selectedFile As String 'Full path of the selected file

Const rowNum As Integer = 1
Const colNum As Integer = 1
Const workingSheet As Integer = 1
Const size As Variant = 100
Const clrTyp As Variant = 1

With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False

        If .Show = False Then
            Exit Sub
        Else
            selectedFile = .SelectedItems(1)
            Application.Run ("'ScreenCapture子プログラム.xlsm'!pasteCapture (" & selectedFile & "," & rowNum & "," & colNum & "," & workingSheet & "," & size & "," & clrTyp & ")") **
            'This is where the error occors. Application.Run is able to open 'ScreenCapture子プログラム.xlsm', but it is not able to call the macro...**
        End If
End With

End Sub

'The above program calls the following program

Sub pasteCapture(selectedFile, rowNum, colNum, workingSheet, size, clrTyp)

Dim capture As Image 'Captured image
Dim capturesFile As Workbook

EnterCommentUserForm.Show
.
.
.

End Sub

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 28 января 2020

Должно выглядеть примерно так:

Application.Run "'ScreenCapture子プログラム.xlsm'!pasteCapture", _
                  selectedFile, rowNum, colNum, workingSheet, size, clrTyp

Это полезная ссылка: https://www.rondebruin.nl/win/s9/win001.htm

Обратите внимание, что рабочая книга с вызываемым макросом должна уже быть открытым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...