Condividi tramite

Eseguire una macro su documento esterno

Anonimo
2016-09-12T17:21:09+00:00

Ciao  a tutti

Gli utenti hanno a disposizione un file ciascuno (uguale x tutti), e la mia necessità è che all'apertura di tale file vengano caricati alcuni dati presenti in un file comune.

Premetto che non posso utilizzare il foglio Personal in quanto le installazioni di excel sono diverse.

Avevo quindi pensato di creare un documento (comune) con la macro da eseguire e lanciarla tramite evento open dai files degli utenti, questo in modo che se debbo modificare tale macro, non devo modificare tutti gli altri file.

Sottopongo un esempio di quanto sto facendo per avere conferma che la procedura da me adottata sia corretta:

il File A (utenti) contiene nell'evento Open di ThisWorkbook:


Private Sub Workbook_Open()

Dim oExcel As Excel.Application

Dim strFile As String

Set oExcel = New Excel.Application

On Error GoTo xit

strFile = "C:\MiaCartella\File_Con_Macro_Da_Eseguire.xlsm"

    oExcel.Workbooks.Open strFile

    Application.Run "'" & strFile & "'!MiaMacro"

xit:

oExcel.Quit

Set oExcel = Nothing

Range("A1").Select

End Sub


Il file B contiene la macro da eseguire:

========================

Sub MiaMacro ()

'.....fai qualcosa....

ActiveWorkbook.Close False

End Sub

=======================

Ho dei dubbi in quanto aprendo poi un file qualsiasi mi ritrovo il file B aperto

Grazie per l'attenzione

domenico

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2016-09-12T17:50:33+00:00

Ciao Domenico,

Gli utenti hanno a disposizione un file ciascuno (uguale x tutti), e la mia necessità è che all'apertura di tale file vengano caricati alcuni dati presenti in un file comune.

Premetto che non posso utilizzare il foglio Personal in quanto le installazioni di excel sono diverse.

Avevo quindi pensato di creare un documento (comune) con la macro da eseguire e lanciarla tramite evento open dai files degli utenti, questo in modo che se debbo modificare tale macro, non devo modificare tutti gli altri file.

Sottopongo un esempio di quanto sto facendo per avere conferma che la procedura da me adottata sia corretta:

il File A (utenti) contiene nell'evento Open di ThisWorkbook:


Private Sub Workbook_Open()

Dim oExcel As Excel.Application

Dim strFile As String

Set oExcel = New Excel.Application

On Error GoTo xit

strFile = "C:\MiaCartella\File_Con_Macro_Da_Eseguire.xlsm"

    oExcel.Workbooks.Open strFile

    Application.Run "'" & strFile & "'!MiaMacro"

xit:

oExcel.Quit

Set oExcel = Nothing

Range("A1").Select

End Sub


Il file B contiene la macro da eseguire:

========================

Sub MiaMacro ()

'.....fai qualcosa....

ActiveWorkbook.Close False

End Sub

=======================

Ho dei dubbi in quanto aprendo poi un file qualsiasi mi ritrovo il file B aperto

Prova a sostituire la routine nel primo file con:

'=========>>

Option Explicit

'--------->>

Private Sub Workbook_Open()

    Dim WB As Workbook

    Dim strFile As String

    On Error GoTo XIT

    strFile = "C:\MiaCartella\File_Con_Macro_Da_Eseguire.xlsm"

    Application.ScreenUpdating = False

    Set WB = Workbooks.Open(strFile)

    Application.Run "'" & WB.Name & "'!MiaMacro"

XIT:

    Application.ScreenUpdating = True

End Sub

'<<=========

Nel secondo file, prova qualcosa del genere:

'=========>>

Option Explicit

'--------->>

Public Sub MiaMacro()

'\ Tuo codice, ad esempio:

    MsgBox "Hi"

    ThisWorkbook.Close False

End Sub

'<<=========

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

1 risposta aggiuntiva

Ordina per: Più utili
  1. Anonimo
    2016-09-13T08:47:09+00:00

    Perfetto Norman

    grazie infinite

    domenico

    La risposta è stata utile?

    0 commenti Nessun commento