Condividi:        

Salva su file esterno

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Salva su file esterno

Postdi ale42 » 23/05/14 16:34

Salve a tutti.
Con il codice sotto riportato vado a registrare i dati della singola Fattura, scelta preventivamente dalla combobox1, nell'Archivio Fatture dello stesso file. Quindi, scegliendo dalla combobox1 la Fattura il codice compie il suo dovere.
Il problema è questo: avrei bisogno che i dati della fattura, scelta dalla combobo1, vengano registrati su un file esterno chiamato "Fatturazione" sul foglio chiamato "Archivio Generale".
Ho fatto tante prove ma non riesco a venirne fuori. Sono nel panico; o non registra niente, oppure, va in crash.
Grazie
Codice: Seleziona tutto
   ' Registra singola fattura scelta dalla combobox1 in Archivio Fatture in  questo file
If ComboBox1 = "" Or ComboBox1 = "" Then
MsgBox "Scrivere il Codice Cliente da Archiviare !", vbExclamation, "Inserisci il Cliente..."
ComboBox1.SetFocus
Exit Sub
End If
If (ComboBox1.ListIndex <> -1) Then
    TxtOption = ComboBox1.List(ComboBox1.ListIndex)
Else
    MsgBox ("La Fattura scelta non Esiste!")
    Exit Sub
End If

Dim msg, Style, title, response, MyString
msg = "Vuoi Registrare in Archivio la singola Fattura ? "
Style = vbYesNo + vbExclamation + vbDefaultButton2
title = "ATTENZIONE !"
response = MsgBox(msg, Style, title)
If response = vbYes Then
    MyString = "Yes"
Application.ScreenUpdating = False ' disattiva lo schermo
Dim irow As Integer
irow = 3  ' inizia a scrivere dalla riga 3
While Sheets("Archivio Fatture").Cells(irow, 1) <> ""
irow = irow + 1
Wend
Sheets("Archivio Fatture").Cells(irow, 1) = [C13]
Sheets("Archivio Fatture").Cells(irow, 2) = [f6]
Sheets("Archivio Fatture").Cells(irow, 3) = [f7]
Sheets("Archivio Fatture").Cells(irow, 4) = [f8]
Sheets("Archivio Fatture").Cells(irow, 5) = [g8]
Sheets("Archivio Fatture").Cells(irow, 6) = [g9]
Sheets("Archivio Fatture").Cells(irow, 7) = [g10]
Sheets("Archivio Fatture").Cells(irow, 8) = [i3]
Sheets("Archivio Fatture").Cells(irow, 9) = [g3]
Sheets("Archivio Fatture").Cells(irow, 10) = [c15]
Sheets("Archivio Fatture").Cells(irow, 11) = [e15]
Sheets("Archivio Fatture").Cells(irow, 12) = [b18]
Sheets("Archivio Fatture").Cells(irow, 13) = [b20]
Sheets("Archivio Fatture").Cells(irow, 14) = [b21]
Sheets("Archivio Fatture").Cells(irow, 15) = [c21]
Sheets("Archivio Fatture").Cells(irow, 16) = [e41]
Sheets("Archivio Fatture").Cells(irow, 17) = [g41]
Sheets("Archivio Fatture").Cells(irow, 18) = [i41]
Sheets("Archivio Fatture").Cells(irow, 19) = [h40]
Sheets("Archivio Fatture").Cells(irow, 20) = [b22]
Sheets("Archivio Fatture").Cells(irow, 21) = [b24]
Sheets("Archivio Fatture").Cells(irow, 22) = [b25]
Sheets("Archivio Fatture").Cells(irow, 23) = [c25]
Sheets("Archivio Fatture").Cells(irow, 24) = [b26]
Sheets("Archivio Fatture").Cells(irow, 25) = [b28]
Sheets("Archivio Fatture").Cells(irow, 26) = [b29]
Sheets("Archivio Fatture").Cells(irow, 27) = [c29]
Sheets("Archivio Fatture").Cells(irow, 28) = [b30]
Sheets("Archivio Fatture").Cells(irow, 29) = [b32]
Sheets("Archivio Fatture").Cells(irow, 30) = [33]
Sheets("Archivio Fatture").Cells(irow, 31) = [c33]
Sheets("Archivio Fatture").Cells(irow, 32) = [b34]
Sheets("Archivio Fatture").Cells(irow, 33) = [b36]
Sheets("Archivio Fatture").Cells(irow, 34) = [b37]
Sheets("Archivio Fatture").Cells(irow, 35) = [c37]
Sheets("Archivio Fatture").Cells(irow, 36) = [b38]
Sheets("Archivio Fatture").Cells(irow, 37) = [c14]
Application.ScreenUpdating = True ' attiviamo lo schermo
MsgBox "La Fattura   - " & ComboBox1.Value & " - è stata Registrata con successo!", vbInformation, "Fattura Registrata..."
CommandButton40.BackColor = 65535 '<--- Il pulsante si colora di giallo indicandomi così che è stato usato
Else
MyString = "No"
End If 
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Sponsor
 

Re: Salva su file esterno

Postdi Anthony47 » 23/05/14 23:08

Primo consiglio: invece di inserire nel vba quella lunga serie di Sheets("Archivio Fatture").Cells(irow, zz) = [XXyy], creati da qualche parte una zona di 37 celle adiacenti libere in cui riporti pazientemente le celle della fattura che desideri archiviare; per questo userai formule tipo =C13 =F6 =F7 etc; poi assegna un nome a questo intervallo.

Poi nel vba:
con questo codice controlli che il file esterno su cui vuoi scrivere sia aperto, altrimenti lo apri
Codice: Seleziona tutto
'>>> nome file e nome foglio esterno:
DWb = "fatturazione.xlsx"    '<<<
DWs = "Archivio Generale"    '<<<
On Error Resume Next
ReTry:
Set DFile = Workbooks(DWb).Sheets(DWs)
On Error GoTo 0
If DFile Is Nothing Then
    Workbooks.Open "Tuo Percorso Completo del file\" & DWb   '<<<Es H:\direcory\ (deve terminare con "\")
End If
If DFile Is Nothing Then GoTo ReTry
ThisWorkbook.Activate


Inseriscilo tra queste due righe della tua macro:
Codice: Seleziona tutto
Application.ScreenUpdating = False ' disattiva lo schermo
'      <<< Inserire in questa posizione
Dim irow As Integer

Nota l' uso di On Error Resume Next: al primo passaggio il file fatturazione.xlsx potrebbe non essere aperto, quindi non voglio che si generi un errore sull' istruzione Set DFile ; ma se al secondo passaggio, dopo l' apertura del file, c' e' ancora un errore allora e' anomalo e uscira'un messaggio di debug.

Poi sostituisci la parte successiva, da irow = 3 a Sheets("Archivio Fatture").Cells(irow, 37) = [c14] (compresi) con:
Codice: Seleziona tutto
irow = DFile.Cells(Rows.Count, 1).End(xlUp).Row + 1
DFile.Cells(irow, 1).Resize(Range(1, "pippolo").Columns.Count).Value = Range("pippolo").Value

Ho supposto che l' intervallo creato come da primo suggerimento si chiami "pippolo", adatta al tuo caso.
Le istruzioni marcate <<< sono da personalizzare, come da commenti inseriti nel codice.

Se e' meglio che il file remoto venga subito chiuso (es perche' deve essere a disposizione nche di altri utenti) allora in coda alla macro inserisci
Codice: Seleziona tutto
Workbooks(DWb).Close savechanges:=True


Se invece e' meglio lasciarlo aperto, ad es perche' non deve essere usato anche da altri e bisogna caricare altre fatture, allora non mettere la riga Workbooks(DWb).Close in coda alla macro, ma inserisci questo codice nel modulo del vba "ThisWorkbook" (o Questa_cartella_di_lavoro):
Codice: Seleziona tutto
Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Workbooks(fatturazione.xlsx).Close savechanges:=True
End Sub

In questo modo il file esterno sara' certamente rilasciato alla chiusura del file di lavoro.

Spero che possa sviluppare quanto suggerito, comunque siamo qui.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva su file esterno

Postdi ale42 » 24/05/14 07:45

Grazie Anthony,
sei stato gentilissimo. Ora ci provo, vediamo che riesco a combinare. Infatti, oggi essendo libera, posso dedicarmi interamente al problema. Spero di risolverlo quanto prima così sarà completo. Rimarrà solo di accertare che tutto funzioni a dovere effettuando dei Test che già in parte ho fatto.
Ti farò sapere.
Ciao
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salva su file esterno

Postdi ale42 » 24/05/14 10:24

Ciao a tutti.
Non è quello che mi occorre (se ho capito bene le tue spiegazioni). Cerco di spiegarmi. Io ho in un Userform
una Combobox1, dove scelgo un foglio che poi sarebbe una Fattura.
Una volta scelto il foglio "Fattura" dalla Combo, si visualizza il foglio scelto diventando attivo.
Poichè nel file avrò più di una fattura, non posso usare un Range. Perchè dovrei portarmi su tutte le Fatture un Range.
Il codice sotto allegato, non fa altro che registrarmi tutti i dati di tutti i fogli "Fatture" presenti nel file, su un file esterno
chiamato "Fatturazione" foglio "Archivio Generale".
Fin qui tutto bene.Funziona!
Quello che non riesco a fare, per la miseria e, che deve registrare una singola fattura resa attiva/visibile dalla combobox1,
sul file esterno.
Insomma, in poche parole, modificare lo stesso codice dicendo di non registrare tutti i dati di tutti i fogli "Fatture" ma solo
il foglio "Fattura" reso attivo dalla Combobox1.
No so se mi sono spiegata bene. Non me ne volete. Sono all'inizio.
Grazie

Codice: Seleziona tutto
       Dim wk1 As ThisWorkbook: Set wk1 = ThisWorkbook
On Error Resume Next ' gestioni errori, se non trova nella cartella il file fatturazione.xlsx
Workbooks.Open Filename:=ActiveWorkbook.Path & "\fatturazione.xlsm" ' apro il file esterno che si trova  nella stessa cartella
Dim wk2 As Workbook: Set wk2 = Workbooks("fatturazione.xlsm")
Dim sh2 As Worksheet: Set sh2 = wk2.Worksheets("Archivio Generale") ' specifico  il foglio
uriga = sh2.Range("A" & Rows.Count).End(xlUp).Row + 1 ' devi scrivere dalla prima riga libera in giù

wk1.Activate
Label12 = "Attendere prego.....                  Registrazione Fatture in corso."
Dim msg, Style, title, response, MyString
msg = "Vuoi Registrare sul file esterno (Fatturazione - Archivio Generale) tutte le Fatture ? "
Style = vbYesNo + vbExclamation + vbDefaultButton2
title = "ATTENZIONE !"
response = MsgBox(msg, Style, title)
If response = vbYes Then
    MyString = "Yes"
   
wk1.Activate

 Label12 = "Attendere prego.....                  Registrazione Fatture in corso."
Application.ScreenUpdating = False 'spengo lo schermo


' non riesco a modificare il codice indicando che non deve registrarmi tutti i fogli " Fatture", ma solo uno._
Cioè quello scelto e reso attivo dalla combobox1._
dalla tante prove che sto facendo non raggiungo il risultato voluto.


For Each sh In wk1.Sheets ' tutti i fogli di questo file
With sh
' gli ho dato l'indece dal 4 foglio in poi
If .Index > 4 Then

sh2.Cells(uriga, 1) = .[C13] ' celle da copiare sul file esterno
sh2.Cells(uriga, 2) = .[f6]
sh2.Cells(uriga, 3) = .[f7]
sh2.Cells(uriga, 4) = .[f8]
sh2.Cells(uriga, 5) = .[g8]
sh2.Cells(uriga, 6) = .[g9]
sh2.Cells(uriga, 7) = .[g10]
sh2.Cells(uriga, 8) = .[i3]
sh2.Cells(uriga, 9) = .[g3]
sh2.Cells(uriga, 10) = .[c15]
sh2.Cells(uriga, 11) = .[e15]
sh2.Cells(uriga, 12) = .[b18]
sh2.Cells(uriga, 13) = .[b20]
sh2.Cells(uriga, 14) = .[b21]
sh2.Cells(uriga, 15) = .[c21]
sh2.Cells(uriga, 16) = .[e41]
sh2.Cells(uriga, 17) = .[g41]
sh2.Cells(uriga, 18) = .[i41]
sh2.Cells(uriga, 19) = .[h40]
sh2.Cells(uriga, 20) = .[b22]
sh2.Cells(uriga, 21) = .[b24]
sh2.Cells(uriga, 22) = .[b25]
sh2.Cells(uriga, 23) = .[c25]
sh2.Cells(uriga, 24) = .[b26]
sh2.Cells(uriga, 25) = .[b28]
sh2.Cells(uriga, 26) = .[b29]
sh2.Cells(uriga, 27) = .[c29]
sh2.Cells(uriga, 28) = .[b30]
sh2.Cells(uriga, 29) = .[b32]
sh2.Cells(uriga, 30) = .[b33]
sh2.Cells(uriga, 31) = .[c33]
sh2.Cells(uriga, 32) = .[b34]
sh2.Cells(uriga, 33) = .[b36]
sh2.Cells(uriga, 34) = .[b37]
sh2.Cells(uriga, 35) = .[c37]
sh2.Cells(uriga, 36) = .[b38]
sh2.Cells(uriga, 37) = .[c14]
uriga = uriga + 1
End If
End With
Next
 
Label12 = ""
Application.ScreenUpdating = True 'Riaccendo lo schermo
MsgBox "Tutte le Fatture sono state Registrate...", vbInformation, ("Fatture Registrate...")
CommandButton47.BackColor = 65535  '<--- Il pulsante si colora di giallo indicandomi così che è stato già usato
 Else 

   MyString = "No"
 Label12 = ""
 End If
       wk2.Save ' salvo il file esterno
       wk2.Close ' chiudo il file esterno
  Set wk1 = Nothing
  Set wk2 = Nothing
  Set sh2 = Nothing
  On Error GoTo 0 ' termina gestione errori   
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salva su file esterno

Postdi Anthony47 » 24/05/14 18:53

Una volta scelto il foglio "Fattura" dalla Combo, si visualizza il foglio scelto diventando attivo.
Mi dici dove, nel codice che hai pubblicato ieri, questo viene fatto??

Comunque non vedo il problema...
Non crei l' intervallo che avrebbe riepilogato le info da copiare nel file "fatturazione.xlsm", inserisci solo la riga che calcola irow come ti ho suggerito [in sostituzione del loop While Sheets("Archivio Fatture").Cells(irow, 1) <> "" / Wend], e a seguire mantieni tutte le righe Sheets("Archivio Fatture").Cells(irow, zz) = [XXyy]
Le altre istruzioni per gestire l' apertura e la chiusura del file "fatturazione" sono ancora valide.

Pero' vedo che stai seguendo un' altra strada, compreso l' uso indiscriminato di On Error Resume next di cui ti ho gia' parlato male...

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva su file esterno

Postdi ale42 » 26/05/14 11:16

Niente da fare Anthony,
hai ragione quanto da te scritto nel post precedente. Sto facendo una confusione tale che non so neanche io. Questo tu l'hai capito e ti ringrazio. Io me ne son accorta dalle risposte.
Continuo a provare e riprovare,macchè. Ho cercato di seguire i tuoi consigli, ma sicuramente avrò combinato un casino.
Hai ragione quando dici che il file è chiuso e deve essere aperto dalal macro, regitrare i dati, salvare e chiudere il file.
Ti inserisco l'ullimo codice.Mi da Errore VBa in questa riga: If DFile Is Nothing Then ' va in errore e si colora di giallo
Grazie

Codice: Seleziona tutto
  '>>> nome file e nome foglio esterno:
DWb = "fatturazione.xlsm"    '<<<
DWs = "Archivio Generale"    '<<<
On Error Resume Next
ReTry:
Set DFile = Workbooks(DWb).Sheets(DWs)
On Error GoTo 0
If DFile Is Nothing Then ' va in errore e si colora di giallo
   
    Workbooks.Open "C;\users\camel\desktop\finale2\" & DWb   '<<<Es H:\direcory\ (deve terminare con "\")
End If
If DFile Is Nothing Then GoTo ReTry
ThisWorkbook.Activate

Application.ScreenUpdating = False ' disattiva lo schermo
'      <<< Inserire in questa posizione
Dim irow As Integer
irow = DFile.Cells(Rows.Count, 1).End(xlUp).Row + 1

Sheets("Archivio Fatture").Cells(irow, 1) = [C13]
Sheets("Archivio Fatture").Cells(irow, 2) = [f6]
Sheets("Archivio Fatture").Cells(irow, 3) = [f7]
Sheets("Archivio Fatture").Cells(irow, 4) = [f8]
Sheets("Archivio Fatture").Cells(irow, 5) = [g8]
Sheets("Archivio Fatture").Cells(irow, 6) = [g9]
Sheets("Archivio Fatture").Cells(irow, 7) = [g10]
Sheets("Archivio Fatture").Cells(irow, 8) = [i3]
Sheets("Archivio Fatture").Cells(irow, 9) = [g3]
Sheets("Archivio Fatture").Cells(irow, 10) = [c15]
Sheets("Archivio Fatture").Cells(irow, 11) = [e15]
Sheets("Archivio Fatture").Cells(irow, 12) = [b18]
Sheets("Archivio Fatture").Cells(irow, 13) = [b20]
Sheets("Archivio Fatture").Cells(irow, 14) = [b21]
Sheets("Archivio Fatture").Cells(irow, 15) = [c21]
Sheets("Archivio Fatture").Cells(irow, 16) = [e41]
Sheets("Archivio Fatture").Cells(irow, 17) = [g41]
Sheets("Archivio Fatture").Cells(irow, 18) = [i41]
Sheets("Archivio Fatture").Cells(irow, 19) = [h40]
Sheets("Archivio Fatture").Cells(irow, 20) = [b22]
Sheets("Archivio Fatture").Cells(irow, 21) = [b24]
Sheets("Archivio Fatture").Cells(irow, 22) = [b25]
Sheets("Archivio Fatture").Cells(irow, 23) = [c25]
Sheets("Archivio Fatture").Cells(irow, 24) = [b26]
Sheets("Archivio Fatture").Cells(irow, 25) = [b28]
Sheets("Archivio Fatture").Cells(irow, 26) = [b29]
Sheets("Archivio Fatture").Cells(irow, 27) = [c29]
Sheets("Archivio Fatture").Cells(irow, 28) = [b30]
Sheets("Archivio Fatture").Cells(irow, 29) = [b32]
Sheets("Archivio Fatture").Cells(irow, 30) = [33]
Sheets("Archivio Fatture").Cells(irow, 31) = [c33]
Sheets("Archivio Fatture").Cells(irow, 32) = [b34]
Sheets("Archivio Fatture").Cells(irow, 33) = [b36]
Sheets("Archivio Fatture").Cells(irow, 34) = [b37]
Sheets("Archivio Fatture").Cells(irow, 35) = [c37]
Sheets("Archivio Fatture").Cells(irow, 36) = [b38]
Sheets("Archivio Fatture").Cells(irow, 37) = [c14]


Workbooks(DWb).Close savechanges:=True
 
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salva su file esterno

Postdi Anthony47 » 27/05/14 02:28

Devi mettere in testa alla macro questa riga:
Codice: Seleziona tutto
Dim DFile As Worksheet


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva su file esterno

Postdi ale42 » 27/05/14 09:57

Ciao Anthony,
ho fatto come tu mi hai detto. La macro così com è non va in errore VBa, sembra funzionare. Però, quando vado ad aprire il file esterno chiamato "Fatturazione" foglio "Archivio Generale", vedo che non ha registrato nessun dato. Come mai?
Per ulteriori info: uso Excel 2010
Questo è il codice che attualmente sto adoperando ma che non va.
Ciao
Codice: Seleziona tutto
    Dim DFile As Worksheet ' ho aggiunto questa riga come mi hai consigliato
'>>> nome file e nome foglio esterno:
DWb = "fatturazione.xlsm"    '<<<
DWs = "Archivio Generale"    '<<<
On Error Resume Next
ReTry:
Set DFile = Workbooks(DWb).Sheets(DWs)
On Error GoTo 0
If DFile Is Nothing Then

    Workbooks.Open "C:\users\camel\desktop\finale2\" & DWb   '<<<Es H:\direcory\ (deve terminare con "\")

End If
If DFile Is Nothing Then GoTo ReTry
ThisWorkbook.Activate

Application.ScreenUpdating = False ' disattiva lo schermo

Dim irow As Integer
irow = DFile.Cells(Rows.Count, 1).End(xlUp).Row + 1

Sheets("Archivio Fatture").Cells(irow, 1) = [C13]
Sheets("Archivio Fatture").Cells(irow, 2) = [f6]
Sheets("Archivio Fatture").Cells(irow, 3) = [f7]
Sheets("Archivio Fatture").Cells(irow, 4) = [f8]
Sheets("Archivio Fatture").Cells(irow, 5) = [g8]
Sheets("Archivio Fatture").Cells(irow, 6) = [g9]
Sheets("Archivio Fatture").Cells(irow, 7) = [g10]
Sheets("Archivio Fatture").Cells(irow, 8) = [i3]
Sheets("Archivio Fatture").Cells(irow, 9) = [g3]
Sheets("Archivio Fatture").Cells(irow, 10) = [c15]
Sheets("Archivio Fatture").Cells(irow, 11) = [e15]
Sheets("Archivio Fatture").Cells(irow, 12) = [b18]
Sheets("Archivio Fatture").Cells(irow, 13) = [b20]
Sheets("Archivio Fatture").Cells(irow, 14) = [b21]
Sheets("Archivio Fatture").Cells(irow, 15) = [c21]
Sheets("Archivio Fatture").Cells(irow, 16) = [e41]
Sheets("Archivio Fatture").Cells(irow, 17) = [g41]
Sheets("Archivio Fatture").Cells(irow, 18) = [i41]
Sheets("Archivio Fatture").Cells(irow, 19) = [h40]
Sheets("Archivio Fatture").Cells(irow, 20) = [b22]
Sheets("Archivio Fatture").Cells(irow, 21) = [b24]
Sheets("Archivio Fatture").Cells(irow, 22) = [b25]
Sheets("Archivio Fatture").Cells(irow, 23) = [c25]
Sheets("Archivio Fatture").Cells(irow, 24) = [b26]
Sheets("Archivio Fatture").Cells(irow, 25) = [b28]
Sheets("Archivio Fatture").Cells(irow, 26) = [b29]
Sheets("Archivio Fatture").Cells(irow, 27) = [c29]
Sheets("Archivio Fatture").Cells(irow, 28) = [b30]
Sheets("Archivio Fatture").Cells(irow, 29) = [b32]
Sheets("Archivio Fatture").Cells(irow, 30) = [33]
Sheets("Archivio Fatture").Cells(irow, 31) = [c33]
Sheets("Archivio Fatture").Cells(irow, 32) = [b34]
Sheets("Archivio Fatture").Cells(irow, 33) = [b36]
Sheets("Archivio Fatture").Cells(irow, 34) = [b37]
Sheets("Archivio Fatture").Cells(irow, 35) = [c37]
Sheets("Archivio Fatture").Cells(irow, 36) = [b38]
Sheets("Archivio Fatture").Cells(irow, 37) = [c14]

MsgBox "La Fattura   - " & ComboBox1.Value & " - è stata Registrata con successo!", vbInformation, "Fattura Registrata..."
CommandButton40.BackColor = 65535 '<--- Il pulsante si colora di giallo indicandomi così che è stato usato


Workbooks(DWb).Close savechanges:=True             
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salva su file esterno

Postdi Anthony47 » 27/05/14 13:02

Questo buco alla ciambella non vuole proprio riuscire...
Devi modificare tutte quelle righe tipo Sheets("Archivio Fatture").Cells(irow, 1) = [C13] in
DFile.Cells(irow, 1) = [C13]

Che sia la volta buona?
Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva su file esterno

Postdi ale42 » 28/05/14 08:58

Grazie Anthony,
sai, avevo perso le speranze nel poter risolvere questo problema. Non hai idea (anzi, sicuramente si) cosa ho combinato nel provare e riprovare. Ti lascio immaginare. Grazie a te ho potuto risolvere un problema per me importante. E' veramente difficile la programmazione se non hai le basi. Io mi son improvvisata leggendo un pò qua e là. Mannaggià a me. Io non oso pensare di cosa sei in grado di creare vista la tu preparazione nella materia. Ti faccio i miei più sinceri complimenti.
Per la ciambella, ma in generale per i dolci, mio malgrado, sono peggiò dell'usare il Vba. Mi arrangio a cucinare. Il fatto stesso che i miei non si lamentano, vuol dire che almeno li me lacavicchio.
Grazie di tutto Anthony.
Ti allego il codice funzionante dove ho effettuato alcune modifiche. Ad esempio: la scelta della combobox1 e poi ho sostituito
Da:
' Workbooks.Open "C:\users\camel\desktop\finale2\" & DWb '<<<Es H:\direcory\ (deve terminare con "\")
A:
Workbooks.Open Filename:=ActiveWorkbook.Path & "\fatturazione.xlsm" ' apri file esterno che si trova nella stessa cartella
Non so se sta bene. Però funziona.
Ciao

Codice: Seleziona tutto
  ' Se nella combobox1 si trova uno dei seguenti fogli, oppure è vuota, Allora esci dalla sub
If ComboBox1 = "" Or ComboBox1 = "Archivio Fatture" Or ComboBox1 = "AB0" Or ComboBox1 = "Dati Fattura" Or ComboBox1 = "Matrice" Or ComboBox1 = "AB999" Then
MsgBox "Scrivere il Codice Cliente da Archiviare !", vbExclamation, "Inserisci il Cliente..."
ComboBox1.SetFocus
Exit Sub
End If
If (ComboBox1.ListIndex <> -1) Then
    TxtOption = ComboBox1.List(ComboBox1.ListIndex)
Else
    MsgBox ("La Fattura scelta non Esiste!")
    Exit Sub
End If
' fine trova valore in combobox1
Label12 = "ATTENDERE PREGO...           Registrazione Fattura in corso..."

Dim msg, Style, title, response, MyString
msg = "Vuoi Registrare in Archivio Generale la singola Fattura ? "
Style = vbYesNo + vbExclamation + vbDefaultButton2
title = "ATTENZIONE !"
response = MsgBox(msg, Style, title)
If response = vbYes Then
    MyString = "Yes"

Dim DFile As Worksheet
'>>> nome file e nome foglio esterno:
DWb = "fatturazione.xlsm"    '<<<
DWs = "Archivio Generale"    '<<<
On Error Resume Next
ReTry:
Set DFile = Workbooks(DWb).Sheets(DWs)
On Error GoTo 0
If DFile Is Nothing Then

   ' Workbooks.Open "C:\users\camel\desktop\finale2\" & DWb   '<<<Es H:\direcory\ (deve terminare con "\")

    Workbooks.Open Filename:=ActiveWorkbook.Path & "\fatturazione.xlsm" ' apri file esterno che si trova nella stessa cartella
   
End If
If DFile Is Nothing Then GoTo ReTry
ThisWorkbook.Activate

Application.ScreenUpdating = False ' disattiva lo schermo

Dim irow As Integer
irow = DFile.Cells(Rows.Count, 1).End(xlUp).Row + 1

DFile.Cells(irow, 1) = [C13]
DFile.Cells(irow, 2) = [F6]
DFile.Cells(irow, 3) = [F7]
DFile.Cells(irow, 4) = [F8]
DFile.Cells(irow, 5) = [G8]
DFile.Cells(irow, 6) = [G9]
DFile.Cells(irow, 7) = [G10]
DFile.Cells(irow, 8) = [I3]
DFile.Cells(irow, 9) = [G3]
DFile.Cells(irow, 10) = [C15]
DFile.Cells(irow, 11) = [E15]
DFile.Cells(irow, 12) = [B18]
DFile.Cells(irow, 13) = [B20]
DFile.Cells(irow, 14) = [B21]
DFile.Cells(irow, 15) = [C21]
DFile.Cells(irow, 16) = [E41]
DFile.Cells(irow, 17) = [G41]
DFile.Cells(irow, 18) = [I41]
DFile.Cells(irow, 19) = [H40]
DFile.Cells(irow, 20) = [B22]
DFile.Cells(irow, 21) = [B24]
DFile.Cells(irow, 22) = [B25]
DFile.Cells(irow, 23) = [C25]
DFile.Cells(irow, 24) = [B26]
DFile.Cells(irow, 25) = [B28]
DFile.Cells(irow, 26) = [B29]
DFile.Cells(irow, 27) = [C29]
DFile.Cells(irow, 28) = [B30]
DFile.Cells(irow, 29) = [B32]
DFile.Cells(irow, 30) = [B33]
DFile.Cells(irow, 31) = [C33]
DFile.Cells(irow, 32) = [B34]
DFile.Cells(irow, 33) = [B36]
DFile.Cells(irow, 34) = [B37]
DFile.Cells(irow, 35) = [C37]
DFile.Cells(irow, 36) = [B38]
DFile.Cells(irow, 37) = [C14]

Workbooks(DWb).Close savechanges:=True ' chiudo il file esterno e salvo
Application.ScreenUpdating = True ' riattivo lo schermo

CommandButton6.BackColor = 65535 '<--- Il pulsante si colora di giallo indicandomi così che è stato usato

MsgBox "La Fattura   - " & ComboBox1.Value & " - è stata Registrata con successo!", vbInformation, "Fattura Registrata..."
Label12 = ""
Else
MyString = "No"
End If
Label12 = "" 
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18

Re: Salva su file esterno

Postdi Anthony47 » 28/05/14 14:54

Mi sembra che ce l' abbiamo fatta, bene!
Codice: Seleziona tutto
ho effettuato alcune modifiche. Ad esempio: la scelta della combobox1 e poi ho sostituito
Da:
' Workbooks.Open "C:\users\camel\desktop\finale2\" & DWb '<<<Es H:\direcory\ (deve terminare con "\")
A:
Workbooks.Open Filename:=ActiveWorkbook.Path & "\fatturazione.xlsm" ' apri file esterno che si trova nella stessa cartella
Non so se sta bene. Però funziona.
La prima istruzione fornisce la directory completa del file da aprire; la seconda assume che il percorso sia quello dove si trova il file che contiene la macro.
Tuttavia raccomando di usare DWb in ambedue le formulazioni; nella seconda formulazione userai quindi
Codice: Seleziona tutto
Workbooks.Open Filename:=ActiveWorkbook.Path & "\" & DWb


Ciao, alla prossima.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Salva su file esterno

Postdi ale42 » 28/05/14 17:30

Se non fosse stato per te, starei ancora in alto mare.
Ho seguito il tuo consoglio modificando quanto da me fatto in precedenza con DWb.
Ti ringrazio Anthony non solo per la soluzione, ma per la pazienza e gentilezza che hai posto nei miei confronti.
Un Grazie va anche al Forum, che da la possibilità a persone come me ( non esperti) che si affacciano per la prima volta in questo mondo meraviglioso, allo stesso tempo molto complicato e articolato.
Grazie alla prox.
by alessia
Ps. RISOLTO!
ale42
Utente Junior
 
Post: 16
Iscritto il: 19/05/14 17:18


Torna a Applicazioni Office Windows


Topic correlati a "Salva su file esterno":


Chi c’è in linea

Visitano il forum: Gianca532011, Marius44 e 60 ospiti