A macro de chamada do VBA do Excel na pasta de trabalho macro diferente

1

O código do VBA em uma planilha do Excel pode chamar uma Macro de um arquivo XLSM diferente?

Eu tenho um XLSM local que precisa chamar um método em um arquivo XLSM diferente, como isso pode ser feito?

    
por devCO 14.08.2018 / 00:01

3 respostas

1

Abra a pasta de trabalho de arquivos, feche se já estiver aberta

codeWorkBookPath = "Directory\"
codeWorkBookName = "file.xlsm"
codeWorkBookFullPathName = UCase(Trim(codeWorkBookPath)) &         
UCase(Trim(codeWorkBookName))
codeWorkbookAlreadyOpen = CommonWorkbook.isWbOpen(codeWorkBookName)
If Not codeWorkbookAlreadyOpen Then
 Workbooks.Open Filename:=codeWorkBookFullPathName, UpdateLinks:=False, 
 ReadOnly:=True
End If

ativar a planilha inicial

Workbooks(startWorkBook).Activate
Sheets(startWorkSheet).Activate

Execute o macroName

argString = "'" & Trim(codeWorkBookName) & "'!" & Trim(macroName)
APPLICATION.Run argString
    
por 14.08.2018 / 00:09
1

Você precisa usar o CODENAME da planilha, não o nome.

Na imagem que eu compartilho, você deve usar "Sheet1", não "testSheet"

    
por 24.09.2018 / 01:45
0

Opção 1:

Se os dois, Source & As pastas de trabalho de destino estão abertas e você pode usar qualquer uma das seguintes.

Você pode atribuir dinamicamente a pasta de trabalho & Nome da macro para variáveis, então você precisa escrever este código.

Application.Run ("'" & workbookname & "'!macroname")

N.B. Em que workbookname é variável contém File Path, Workbook & Sheet Name & macroname contém o Macro's Name .

Abaixo está o comando direto:

Application.Run ("'Test7A.xlsm'!Sheet1.Rangetest")

Opção 2:

Se a pasta de trabalho de origem estiver fechada, você precisará usar esse método.

Sub myMacro()
    Dim wb As Workbook
    On Error Resume Next
    Set wb = Workbooks("Test7A.xlsm")
    On Error GoTo 0
    If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\Test7A.xlsm")
    Run "Test7A.xlsm!Sheet1.RangeTest"
    wb.Close False
    Set wb = Nothing
End Sub

Em que Test7A.xlsm é o nome da pasta de trabalho Sheet1 é o nome da planilha & RangeTest é a macro da qual você está chamando.

    
por 14.08.2018 / 07:21