Condividi tramite

Aprire più file excel da scheda

Anonimo
2017-07-07T13:22:53+00:00

Salve,

no riesco a risolvere questo problema, per cui chiedo un tuo aiuto.

ho una serie di file che si chiamano:

GestioneCommesse.xlsm

Commesse.xlsm

Clienti.xlsm

Fornitori.xlsm

Ordini.xlsm

Aprendo il file GestioneCommesse.xlsm, si presenta una scheda con tre pulsanti e ad ogni dei tre pulsanti vorrei assegnare un comando per aprire i file:

1 pulsante Commesse.xlsm in Scrittura e Clienti.xlsm solo in lettura

2 pulsante Commesse.xlsm in Scrittura e Fornitori.xlsm solo in lettura

3 pulsante Commesse.xlsm in Scrittura e Ordini.xlsm solo in lettura

dove da Commesse.xlsm posso andare ad attingere dei dati da Clienti.xlsm e salvarli in Commesse.xlsm ecosì per glialtr due pulsanti, ma lasciando la possibilità al io collega di poter tranquillamente lavorare su gli altri file che per me sono in sola lettura, ovviamente se lui vuole lavorare sul file Commesse.xlsm mentre è aperto da me non gli lo permette.

Grazie Gio56

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

9 risposte

Ordina per: Più utili
  1. Anonimo
    2017-07-07T19:55:54+00:00

    Ciao gio56,

    ho provato il tuo file, in tutte le maniere, ma appena premo il pulsante mi compare:

    errore di run-time '1004': impossibile trovare 'commesse.xlsm'. controllare l'ortografia del nome del file e verificare che la posizione del file sia corretta. ...........

    e punta a:     Workbooks.Open Filename:=sFile1

    mentre se scrivo così il codice funziona

    Option Explicit

    Public Const sFile1 As String = "Commesse.xlsm"

    Public Const sFile2 As String = "Clienti.xlsm"

    Public Const sFile3 As String = "Fornitori.xlsm"

    Public Const sFile4 As String = "Ordini.xlsm"

    Public Const sPercorso As String = "C:\NDJ\Giovanni"

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

    Public Sub Pulsante1()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Clienti.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile2)

    End Sub

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

    Public Sub Pulsante2()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Fornitori.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile3)

    End Sub

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

    Public Sub Pulsante3()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Ordini.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile4)

    End Sub

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

    Public Sub Tester(aFile As String, bFile As String)

        Dim WB As Workbooks

        'Workbooks.Open Filename:=sFile1

        'Workbooks.Open Filename:=sFile2, ReadOnly:=True

    End Sub

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

    Grazie Gio56

    Purchè il valore assegnato alla costante sPercorso sia corretto,  e a questo proposito,  nota la barra rovesciata finale, non mi aspetterei di riscontrare un errore, Certamente, nelle mie prove, il mio codice funziona senza alcun errore e nel modo previsto. 

    Aggiungerei che credo che il mio codice sia più efficiente e più facile da aggiornare che il tuo adattamento del codice.

    Detto questo, se i quattro file da aprire si trovassero nella stessa directory che il file GestioneCommesse.xlsm, si potrebbe semplificare  il codice così:

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

    Option Explicit

    Public Const sFile1 As String = "Commesse.xlsm"

    Public Const sFile2 As String = "Clienti.xlsm"

    Public Const sFile3 As String = "Fornitori.xlsm"

    Public Const sFile4 As String = "Ordini.xlsm"

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

    Public Sub Pulsante1()

    Call Tester(sFile1, sFile2)

    End Sub

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

    Public Sub Pulsante2()

    Call Tester(sFile1, sFile3)

    End Sub

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

    Public Sub Pulsante3()

    Call Tester(sFile1, sFile4)

    End Sub

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

    Public Sub Tester(aFile As String, bFile As String)

        Dim WB As Workbook

        Dim sStr As String

        Set WB = ThisWorkbook

        sStr = WB.Path & Application.PathSeparator

        Workbooks.Open Filename:=sStr & sFile1

        Workbooks.Open Filename:=sStr & sFile2, ReadOnly:=True

    End Sub

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

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-07-07T20:35:27+00:00

    Ciao gio56,,

    Stupendo funziona tutto molto bene.

    Mi fa piacere che tu abbia risolto il problema e ti ringrazio per il cortese riscontro.

    Alla prossima!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-07-07T20:04:57+00:00

    Grazie Norman

    Stupendo funziona tutto molto bene.

    Ciao Gio56

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-07-07T19:19:24+00:00

    Ciao Norman,

    ho provato il tuo file, in tutte le maniere, ma appena premo il pulsante mi compare:

    errore di run-time '1004': impossibile trovare 'commesse.xlsm'. controllare l'ortografia del nome del file e verificare che la posizione del file sia corretta. ...........

    e punta a:     Workbooks.Open Filename:=sFile1

    mentre se scrivo così il codice funziona

    Option Explicit

    Public Const sFile1 As String = "Commesse.xlsm"

    Public Const sFile2 As String = "Clienti.xlsm"

    Public Const sFile3 As String = "Fornitori.xlsm"

    Public Const sFile4 As String = "Ordini.xlsm"

    Public Const sPercorso As String = "C:\NDJ\Giovanni"

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

    Public Sub Pulsante1()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Clienti.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile2)

    End Sub

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

    Public Sub Pulsante2()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Fornitori.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile3)

    End Sub

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

    Public Sub Pulsante3()

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Commesse.xlsm", ReadOnly:=False

    Workbooks.Open Filename:="C:\NDJ\Giovanni\Ordini.xlsm", ReadOnly:=True

    'Call Tester(sFile1, sFile4)

    End Sub

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

    Public Sub Tester(aFile As String, bFile As String)

        Dim WB As Workbooks

        'Workbooks.Open Filename:=sFile1

        'Workbooks.Open Filename:=sFile2, ReadOnly:=True

    End Sub

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

    Grazie Gio56

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-07-07T14:13:12+00:00

    Ciao gio56,

    no riesco a risolvere questo problema, per cui chiedo un tuo aiuto.

    ho una serie di file che si chiamano:

    GestioneCommesse.xlsm

    Commesse.xlsm

    Clienti.xlsm

    Fornitori.xlsm

    Ordini.xlsm

    Aprendo il file GestioneCommesse.xlsm, si presenta una scheda con tre pulsanti e ad ogni dei tre pulsanti vorrei assegnare un comando per aprire i file:

    1 pulsante Commesse.xlsm in Scrittura e Clienti.xlsm solo in lettura

    2 pulsante Commesse.xlsm in Scrittura e Fornitori.xlsm solo in lettura

    3 pulsante Commesse.xlsm in Scrittura e Ordini.xlsm solo in lettura

    dove da Commesse.xlsm posso andare ad attingere dei dati da Clienti.xlsm e salvarli in Commesse.xlsm ecosì per glialtr due pulsanti, ma lasciando la possibilità al io collega di poter tranquillamente lavorare su gli altri file che per me sono in sola lettura, ovviamente se lui vuole lavorare sul file Commesse.xlsm mentre è aperto da me non gli lo permette.

    Prova qualcosa del genere:

    • Apri il file GestioneCommesse.xlsm
    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

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

    Option Explicit

    Public Const sFile1 As String = "Commesse.xlsm"

    Public Const sFile2 As String = "Clienti.xlsm"

    Public Const sFile3 As String = "Fornitori.xlsm"

    Public Const sFile4 As String = "Ordini.xlsm"

    Public Const sPercorso As String =  _

                         "**C:\Users\NDJ\Giovanni**"                      '<<=== Modifica

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

    Public Sub Pulsante1()

        Call Tester(sFile1, sFile2)

    End Sub

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

    Public Sub Pulsante2()

        Call Tester(sFile1, sFile3)

    End Sub

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

    Public Sub Pulsante3()

        Call Tester(sFile1, sFile4)

    End Sub

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

    Public Sub Tester(aFile As String, bFile As String)

        Dim WB As Workbook

        Workbooks.Open Filename:=sFile1

        Workbooks.Open Filename:=sFile2, ReadOnly:=True

    End Sub

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

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Fai clic sul primo pulsante  | Assegna Macro |  digita Pulsante1
    • Fai clic sul secondo pulsante  | Assegna Macro | digita Pulsante2
    • Fai clic sul terzo pulsante  | Assegna Macro | digita Pulsante3
    • Salva il file con l’estensionexlsm

    Potresti scaricare il miei file di prova nella cartella zippata:

    Giovanni20170707.zip

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento