Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Salvare copia del solo foglio attivo evitando errore di debug negano la sovrascrizione

Ultimo Aggiornamento: 30/09/2019 12:21
Post: 26
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 17:07

Mi sa che sto diventando un tormente un fastidio (una zecca), ma a chi rivolgermi ? Vi allego la macro x il salvataggio del singolo foglio, che ovviamente pecca nel titolo della discussione :

Sub Salva_Xlsx_MA() ' (Modulo 4)
'
' Salva_Xlsx_MA Macro - Solo il Foglio attivo
'
Dim nomefile, Percorso As String

ActiveSheet.Copy
Percorso = "d:\01 - Anno in Corso - XLSX\"
nomefile = "Archivio - del Solo Mese di - " & ActiveSheet.Name
ActiveWorkbook.SaveAs Percorso & nomefile
ActiveWindow.Close
End Sub

Se eseguo la macro una sola volta tutto è OK. Ma se erroneamente rifaccio il salvataggio mi chiede il permesso di sovrascrivere, e mi va bene x il si. il problema che da errore di debug in caso di risposta negativa. Ho perso il filo di ARIANNA||| Grazie Giacomo
Post: 3.485
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
26/09/2019 18:31

Buona sera, Giacomo;
ben ritrovato.

Per la Tua richiesta direi che potresti provare in due modi; se desideri ricevere il messaggio di sovrascrivere potresti provare con:

Option Explicit

Sub Salva_Xlsx_MA() ' (Modulo 4)
' Salva_Xlsx_MA Macro - Solo il Foglio attivo
On Error GoTo 10
Dim NomeFile As String, Percorso As String
Application.ScreenUpdating = False

    ActiveSheet.Copy
        Percorso = "d:\01 - Anno in Corso - XLSX\"
        NomeFile = "Archivio - del Solo Mese di - " & ActiveSheet.Name
    ActiveWorkbook.SaveAs Percorso & NomeFile
10:
Application.DisplayAlerts = False
    ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Mentre, se desideri sovrascrivere senza alcun messaggio di conferma potresti provare con:

Option Explicit

Sub Salva_Xlsx_MA() ' (Modulo 4)
' Salva_Xlsx_MA Macro - Solo il Foglio attivo
On Error GoTo 10
Dim NomeFile As String, Percorso As String
Application.ScreenUpdating = False

    ActiveSheet.Copy
        Percorso = "d:\01 - Anno in Corso - XLSX\"
        NomeFile = "Archivio - del Solo Mese di - " & ActiveSheet.Name
Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Percorso & NomeFile
10:
    ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub




A disposizione.

Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 26
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 18:56

Grazie più veloci della luce. Vado a fare 2 passi x scaricare un po di tossine, da PC, appena torno provo e ti RINGRAZIO GIA' FIN DA ORA.
Giacomo
Post: 27
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 19:07

Volevo disintossicarmi un po' ma la curiosità non è solo FEMMINA, quindi solo una boccata d'aria e l'ho provato. Giuseppe sei MITICO mi hai dato pure la dritta x salvare e sovrascrivere senza chiedere, è ovvio che leggi nel pensiero.
Ciao e grazie come sempre.
Giacomo
Post: 28
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 20:40

Giuseppe ciao. scusa ma ora è frenesia in dirittura d'arrivo, la tua correzione alla macro è validissima : Vedi sotto
--------------------------------------------------------------
Option Explicit
Sub Salva_Xlsx_MA() ' (Modulo 4) - Solo il Foglio attivo
On Error GoTo 10

'Dim NomeFile As String, Percorso As String ' Ho dovuto correggere in
Dim NomeFile, Percorso As String ' Perché mi dava errore.!Mi piacerebbe sapere xkè il dimensionamento sopra da errore.

Application.ScreenUpdating = False
ActiveSheet.Copy
Percorso = "d:\01 - Anno in Corso - XLSX\"
NomeFile = "Archivio - del Solo Mese di - " & ActiveSheet.Name
ActiveWorkbook.SaveAs Percorso & NomeFile
10:
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Funziona alla grande
-----------------------------------------------------------------
Visto il buon esito della tua correzzione volevo implementarla anche in questa x il salvataggio del foglio/cartella COMPLETO.

Ma purtroppo non riesco a sistemarla mi fa i casini che faceva quella sopra, mi esce da foglio mi crea una cartella 1 e chi più ne ha ne metta.

Sub Salva_Foglio_Completo() '(Modulo 3)
On Error GoTo 10
Dim NomeFile, Percorso As String
Application.ScreenUpdating = False
Workbooks(1).Activate
Percorso = "d:\d:\01 - Anno in Corso - XLSX\"
NomeFile = "Archivio Completo - Anno " & Range("O11").Value
ActiveWorkbook.SaveCopyAs Percorso & NomeFile & (".xlsm")
10:
Application.DisplayAlerts = False
ActiveWindow.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
---------------------------------------------------------
Dov'è che CASCA l'ASINO ????
Grazie Giuseppe e poi ti assicuro che per tutta settimana Vi lascio riposare.
Ciao Giacomo

Post: 29
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 20:46

Giuseppe scusa riprovo xkè mi sono accorto di un errore madornale vedi :
Percorso = "d:\d:\01 - Anno in Corso - XLSX\"
corrrecco in : Percorso = "d:\01 - Anno in Corso - XLSX\"

poi ti so dire.

Pardon
Post: 30
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
26/09/2019 20:55

Giuseppe rieccomi : aggiustata ma non funzionante

Sub Salva_Foglio_Completo() '(Modulo 3)
On Error GoTo 10
Dim NomeFile, Percorso As String
Application.ScreenUpdating = False
Workbooks(1).Activate
Percorso = "D:\01 - Anno in Corso - XLSX\"
NomeFile = "Archivio Completo - Anno " & Range("O11").Value
ActiveWorkbook.SaveCopyAs Percorso & NomeFile & (".xlsm")
10:
Application.DisplayAlerts = False

'ActiveWindow.Close - Questa era la causa della chiusura di tutto

Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

Salva solo una volta e poi se ripeto il comando non fa nulla, nessuna verifica ne sovrascrittura.

Scusa ciao Buona serata
Giacomo
Post: 3.486
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
27/09/2019 07:50

Buona giornata, Giacomo;
preliminarmente bisognerebbe capire quale sia il Valore in Cella "O11".

Allega un File (senza Dati sensibili) con alcuni Record significativi già inseriti e chiarisci ciò che desideri ottenere.




A disposizione.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 2.401
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
27/09/2019 15:51

ActiveWorkbook.SaveCopyAs Percorso & NomeFile & (".xlsm")

solo per curiosià: che ci stanno a fare quelle parentesi??

saluti



Domenico
Win 10 - Excel 2016
Post: 31
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
27/09/2019 16:49

Ciao da buon (Giapponesino una volta) trovandoli negli esempi da cui traggo spunto (Copio) me li porto a spasso come se fossero delle esigenze, tolte come da interrogazione, avevi ragione tu non servono, funziona anche senza.
Post: 32
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
27/09/2019 18:26

Giuseppe ciao, scusa ma comincio a non capirci più una mazza. Ho fatto un foglio (che allego) nuovo come mi hai richiesto. Praticamente il problema è simile nelle 2 macro e le spiegazioni e gli errori li ho apostrofati. Spero che il materiale ti sia di chiarimento x i casi che combino. Spero di aver fatto giusto non vedo se ti ho allegato il file
Ciao
Post: 3.487
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
27/09/2019 19:47

Buona sera, Giacomo;
credo ci siano alcune cosette da sistemare.

-    Nel Fogio di lavoro "Riepilogo Annuale" in Cella "O11" non vedo alcun Valore; anche perchè le Celle "O9, O10 e O11" sono Celle unite e, come tali, se non mi sbaglio, l'unico Valore valido reso sarebbe in "O9".
-    Nei tre Fogli di lavoro il Pulsante "Salva in Xlsx Solo il Foglio Attivo" attiva il Codice VBA "Salva_Xlsx_MA" registrato nel "Modulo4"

Queso temo creerà un problema; nel File salvato avrai un riferimento esterno generato dal Pulsante "Salva in Xlsx Solo il Foglio Attivo", voglio dire, nei File salvati con questo Codice VBA ci sarà un Riferimento al Codice VBA presente nel File originale.

Ciò premesso, ti chiedo se la tua nuova richiesta è quella di salvare la copia del File originale, con tutti Fogli di lavoro presenti in esso, in un nuovo File.

A margine di quanto sopra, ti consiglio di valutare l'effetiva utilità delle "Celle unite" che, a mio modesto parere creano più problemi che benefici.
Inoltre dovresti rivedere tutte le Formule che generano l'Errore "#RIF!".

Credo che in Forum tu possa trovare validi aiuti ma temo che la struttura vada rivista radicalmente.



Buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 33
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
27/09/2019 20:09

Giuseppe ciao grazie x la tua pazienza, scusa ma con tutto questo dentro e fuori ti ho mandato un cosa sbagliata x togliere i dati sensibili mi ero messo a disfare il foglio lavoro poi accorto che facevo più danno del dovuto ho rinunciato ed ho fatto un foglio nuovo meno ingombrante e incasinato, che ovviamente non ti ho mandato, ma se non spengo x un po le lampadine, mi sa che ni salta il contattore. Vediamo di mandarti intanto quello giusto rifatto per l'occasione. Cancella la precedente rifacciamo ex novo. Scusami mi auguro che ne abbiate pochi come me, oppure avete un bel CONTATTORE x i guasti alla corrente.
Post: 34
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
27/09/2019 20:12

Scusa del doppione, ma finche non invi la risposta non sai se hai caricato o no il file. Meglio abbondare che deficere.
Post: 3.489
Registrato il: 03/04/2013
Utente Master
Excel 2000 - 2013
OFFLINE
30/09/2019 10:55

Buona giornata, Giacomo;
consentimi di ringraziare @by sal per aver cancellato il tuo indidirizzo Mail dalla Discussione:
Questa Discussione

Fatto ciò, temo di non poterti essere d'aiuto nella tua richiesta:
@G.Buratti, scrive:

... volevo implementarla anche in questa per il salvataggio del foglio/cartella completo. ...


Non che in VBA non si possa fare, ma, a mio modesto parere, utilizzo VBA per operazioni ripetitive o particolarmente complesse.
Nel tuo caso, se non ho male interpretato la tua richiesta, il nuovo File andrebbe salvato una volta ogni anno; in ogni caso la Procedura manuale "Salva con nome" non mi sembra così impegnativa da richiedere l'utilizzo di un Codice VBA.

Perdonami, ma questa è la mia idea di utilizzo di VBA può piacere o meno ma tant'è.

Con amicizia.

Buon Lavoro.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 35
Registrato il: 26/12/2015
Città: SAN GIULIANO MILANESE
Età: 76
Utente Junior
2019
OFFLINE
30/09/2019 12:21

Giuseppe ciao Giacomo, Vi ringrazio per il vostro e tuo aiuto in particolare, mi permetto di sottoporti la soluzione che ho cercato trovato copiato corretto ed adattata alle mie necessità, premetto che mi son dovuto sorbire un sacco di script e macro tortuose lunghe chilometri, ed oserei dire per me (Neofita e come precedente detto Giapponesiono Copione, senza offesa x i Giapponesini che a furia di copiare sono diventati più bravi dei loro creatori, ma questa è un'altra storia.) quasi incomprensibili, non sarà sicuramente una soluzione da BRAVO EXCELLISTA ma ti garantisco che funziona alla grande, su ogni singolo foglio, e sulla Cartella completa, con la cosa importante di non cambiare il nome originario del foglio/cartella di lavoro.
Se per caso dopo avegli dato un'occhiata, vorresti consigliarmi dei miglioramenti, ti sarei oltre modo grato.

------------------------------------------------------------------
Sub PDF_Completo_x_Anno() ' Salva una copia del Foglio/Cartella di lavoro in PDF con il nome da "MyDir"
'senza cambiare il nome del foglio/cartella di lavoro in uso! Con MsgBox di verifica x
'sovrascrittura
Dim MyDir As String, NomeFile As String
Dim FileExist As Boolean

Application.ScreenUpdating = False
MyDir = "d:\Nome directory\" ' Cartella dove verrà salvato il foglio attivo/su cui si sta lavorando
NomeFile = "Archivio Completo - Anno " & Range("O11").Value ' Nome del file che si andrà a creare
If Dir(MyDir & "" & NomeFile & ".pdf") <> "" Then
Select Case MsgBox("Attenzione: esiste già un file con questo nome." _
& vbCrLf & "Vuoi sovrascrivere il file?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, "Duplicato")
Case vbNo
Exit Sub
End Select
End If
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
MyDir & NomeFile & (".pdf") _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

'ActiveWorkbook.SaveCopyAs MyDir & NomeFile & ".xlsm"
MsgBox "Il Foglio/Cartella di Lavoro in PDF Anno - " & Range("O11").Value & " - è stato copiato/Salvato, Correttamente !"
End Sub
-------------------------------------------------------------------------------------------------------------------------------------

Sub Salva_Xlsx_MA() ' Salva una copia del solo foglio di lavoro con il nome del foglio Mese/Foglio Attivo
'senza cambiare il nome del foglio/cartella di lavoro in uso! Con MsgBox di verifica x
'sovrascrittura
Dim MyDir As String, NomeFile As String
Dim FileExist As Boolean
Application.ScreenUpdating = False
MyDir = "d:\Nome directory\" ' Cartella dove verrà salvato il foglio attivo/su cui si sta lavorando
NomeFile = "Archivio - del Solo Mese di - " & ActiveSheet.Name ' Nome del file che si andrà a creare
If Dir(MyDir & "" & NomeFile & ".xlsm") <> "" Then
Select Case MsgBox("Attenzione: esiste già un file con questo nome." _
& vbCrLf & "Vuoi sovrascrivere il file?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, "Duplicato")
Case vbNo
Exit Sub
End Select
End If
Application.DisplayAlerts = False
ActiveSheet.Copy
With ActiveWorkbook
.SaveAs Filename:=MyDir & NomeFile & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
.Close savechanges:=False
End With
Application.DisplayAlerts = True
Application.ScreenUpdating = True
MsgBox "Il Solo Foglio di Lavoro di - " & ActiveSheet.Name & " - è stato copiato/Salvato, Correttamente !"
End Sub
------------------------------------------------------------------------------------------------------------------------------
Sub Salva_Foglio_Completo() ' Salva una copia del Foglio/Cartella di lavoro con il nome " NomeFile "
'senza cambiare il nome del foglio/cartella di lavoro in uso! Con MsgBox di verifica x sovrascrittura
Dim MyDir As String, NomeFile As String
Dim FileExist As Boolean

Application.ScreenUpdating = False
MyDir = "d:\Nome directory\" ' Cartella dove verrà salvato il foglio attivo/su cui si sta lavorando
NomeFile = "Archivio Completo - Anno " & Range("O11").Value ' Nome del file che si andrà a creare
If Dir(MyDir & "" & NomeFile & ".xlsm") <> "" Then
Select Case MsgBox("Attenzione: esiste già un file con questo nome." _
& vbCrLf & "Vuoi sovrascrivere il file?" _
, vbYesNo Or vbExclamation Or vbDefaultButton1, "Duplicato")
Case vbNo
Exit Sub
End Select
End If

ActiveWorkbook.SaveCopyAs MyDir & NomeFile & ".xlsm"
MsgBox "Il Foglio/Cartella di Lavoro Anno - " & Range("o11").Value & " - è stato copiato/Salvato, Correttamente !"
End Sub

----------------------------------------------

Sono sicuro che ha qualcuno serviranno sicuramente. Ps. Il lavoro di un anno è lungo ed imprevedibile e soggetto inconsapevolmente a degli errori sia di scritture sbagliate (e magari Non protette nei fogli) che di archiviazione, quindi avere la possibilità semplice senza problematiche di salvare il lavoro in corso, (Problema successo in corso d'opera) mi sembrava il caso di cercare e di proporre una simile soluzione. Se ce ne sono di meglio mi farebbe piacere conoscerle.
Un grazie infinito, x il Vostro aiuto.
Giacomo
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 08:42. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com