Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
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