Gestire un archivio esterno da userform

Prima di tutto, essendo un nuovo iscritto voglio salutare la Community, mi scuso per eventuali errori di formulazione, detto questo vi descrivo la mia domanda.

Ho una userform inserita dentro alcuni file dove emetto dei documenti proforma per alcuni vettori, nei documenti ho inserito una macro che mi archivia le informazioni che mi interessano del documento in un archivio esterno, sempre di excel, la userform all'occorrenza mi visualizza queto archivio, posso selezionare tutti i documenti, oppure se mi serve un vettore specifico, ho un mese specifico per quel vettore, fin quì tutto bene.

Il problema è sorto quando volevo inserire tre nuovi pulsanti alla userform per poter, Modificare, Inserire, o Eliminare la riga selezionata dalla listbox, non sono esperto del vba, questa userform l'ho riadattata da un esempio riportato in rete da Mauro Gamberini se non vado errato, persona che considero molto esperta in materia di vba, per questi tre pulsanti non riesco a scrivere una macro che faccia ciò che essi dovrebbero, per questo vi sarei grato se potreste darmi una mano ad elaborare queste macro. Allego un file di esempio se può essere utile, ed eventualmente allegherò la cartella completa su cui lavorano questi file, che girano su una chiavetta.

Un grazie anticipitato, Antonio Marmo

 

 

Informazioni domanda


Ultimo aggiornamento febbraio 21, 2018 Visualizzazioni 1.463 Si applica a:
Risposta


Ora ti chiedo, è possibile fare aprire File_02 all'atto di apertura della userform di File_01, tenendo conto che File_02 si trova in una cartella diversa di File_01. (vedi immagine esempio)


 

 


Segui attentamente, io faccio sempre riferimanto all'esempio del quale ho postato il link.


1) Modifica così l'evento Initialize della UserForm:


Private Sub UserForm_Initialize()
    Set wk = Workbooks.Open(ThisWorkbook.Path & "\Dati\Due.xlsm")
    Set sh = wk.Worksheets("Foglio1")
    Me.ListBox1.ColumnCount = 2
    With sh
        lRiga = .Range("A" & .Rows.Count).End(xlUp).Row + 1
    End With
    Call mCaricaListBox
End Sub


La parte in grassetto va modificata con il nome della tua cartella e del tuo file. Nel mio esempio, ho aggiunto una cartella chiamata Dati e le ho messo dentro il file Due.xlsm (.xls per te).


Modifica così l'evento Terminate della UserForm:


Private Sub UserForm_Terminate()
    wk.Save
    wk.Close

    Set sh = Nothing
    Set wk = Nothing
End Sub


E modifica così la chiamata alla UserForm:


Public Sub m()
On Error GoTo RigaErrore
    UserForm1.Show
    Exit Sub
RigaErrore:
    MsgBox "File non trovato"
End Sub


Occhio che se il file Due.xlsm è aperto, ricevi un avviso. Adesso, con questo codice, il file Due.xlsm vuole chiuso, ci pensa la UserForm ad aprirlo e a chiuderlo.


Qui trovi i file modificati. La cartella Dati vuole nella stessa Directory di Uno.xlsm:


Prova un po'.... Lo so che la pappa pronta sarebbe molto meglio, ma sai la soddisfazione se piano piano ci arrivi da solo!


--
Mauro Gamberini
Microsoft© MVP (Excel)
http://www.maurogsc.eu

Il problema è stato risolto?

Siamo spiacenti che questo non sia stato d'aiuto.

Fantastico! Grazie per aver scelto questa risposta.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento, ci aiuta a migliorare il sito.

Sei soddisfatto di questa risposta?

Grazie per il tuo commento.