Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

macro per salvare scheda

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

macro per salvare scheda

Postdi erryrox » 16/04/12 14:36

Ciao a tutti, sono nuovo e vi espongo subito il problema:
Ho una cartella di lavoro con molte schede. In una di queste vorrei inserire un bottone che mi permetta di salvare solo quella scheda, magari (se possibile) all'interno dello stesso workbook con un nome preso da una cella della scheda.

Penso che con una macro si possa fare facilmente, ma io non ci sono riuscito... :(

Grazie in anticipo!!!! :)
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Sponsor
 

Re: macro per salvare scheda

Postdi wallysimpsons » 16/04/12 21:59

Ciao

Prova così:


Codice: Seleziona tutto
Sub SalvaFile()
'
'
    Sheets("Foglio2").Copy
    ActiveWorkbook.SaveAs Filename:= _
        "C:\Documenti\" & Range("A1") & ".xlsx", FileFormat:= _
        xlOpenXMLWorkbook, CreateBackup:=False
End Sub
Wally (Excel 2007)
Avatar utente
wallysimpsons
Utente Junior
 
Post: 11
Iscritto il: 25/11/09 14:09

Re: macro per salvare scheda

Postdi erryrox » 18/04/12 09:04

grazie per la risposta, ho adattato il tuo codice al mio caso ma mi da errore!!!!

Sub salvafile()

Sheets("CS progetti FORM").Copy
ActiveWorkbook.SaveAs Filename:= _
"c:\" & Range("B4") & ".xls", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False

End Sub

Domande sulle possibili cause:
- il percorso del file da salvare deve essere lo stesso del file su cui stò lavorando???
- sono costretto a lavorare con office 2003, questa macro va bene uguale???
- c'è qualche errore nel codice che ho scritto???

P.S: ma con questo codice la scheda che vado a salvare, viene salvata nel workbook su cui stò lavorando?

grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Zer0Kelvin » 18/04/12 09:39

Ciao!
Perdona, visto pero' che il forum è un mezzo di comunicazione a distanza non in tempo reale occorre essere precisi il più possibile, altrimenti la comunicazione va a farsi benedire:
1) per "scheda" intendi un "foglio" della cartella di lavoro?
2) per "salvare" intendi "scrivere su disco"?
3) che tipo di errore viene visualizzato?
Il problema non è di difficile soluzione, ma dobbiamo capire bene quello che devi fare. e così (almeno a mè) non è chiaro.
[Win7,Office2010]
Condividere la conoscenza aumenta la ricchezza di tutti(Z0°K)
Dai ad un uomo un pesce e lo avrai sfamato per un giorno;insegnagli a pescare e lo avrai sfamato per sempre(Confucio)
Il sonno della ragione genera mostri(Francisco Goya)
Avatar utente
Zer0Kelvin
Utente Senior
 
Post: 305
Iscritto il: 08/04/12 11:23

Re: macro per salvare scheda

Postdi erryrox » 18/04/12 17:38

hai perfettamente ragione, scusami!

mi spiego meglio:
Ho una cartella di lavoro con diversi fogli. Uno di questi fogli è un questionario a crocette (da compilare). Io vorrei fare in modo che, dopo averlo compilato il questionario, tramite un bottone si possa salvare il questionario compilato all'interno della stessa cartella di lavoro con un nome preso da una cella del questionario. Il questionario originale poi dovrebbe tornare vuoto dopo aver salvato il nuovo foglio.
Spero di essermi spiegato, grazie ancora per l'aiuto!!

Office 2003
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 18/04/12 22:32

Allora prova con una macro come questa:
Codice: Seleziona tutto
Sub duplisk()
sws = "PIPPO"   '<<< Nome foglio da copiare
If ActiveSheet.Name <> sws Then Exit Sub
Sheets(sws).Copy after:=Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = Range("A1").Value      '<<< La cella col nome
Sheets(sws).Select
End Sub

Personalizza le istruzioni marcate <<< e poi assegnala a un pulsante che disegnerai nel foglio che va copiato/rinominato.
Se con la stessa macro vuoi anche, nel foglio originale, cancellare le celle da ricompilare, allora registra una macro mentre diligentemente azzeri le celle che ti servono; poi, nella macro di prima inserisci
Call LaMiaMacroAutoregistrata subito prima di End Sub.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per salvare scheda

Postdi erryrox » 19/04/12 09:56

perfetto, funziona alla grande....grazie milleeee!!! grazie ad altre discussioni ho anche ampliato la formula inserendo dei "messaggi di conferma".

Ora chiedo una cosa ancora più complessa.
E' possibile creare un collegamento ipertestuale (in automatico) ai fogli che vengono creati??
Praticamente in un foglio riassuntivo voglio mettere dei bottoni (uno per ogni questionario compilato) che si collegano ai questionari che vengono creati.
Grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 19/04/12 22:02

Si puo' fare, pero' non ho capito quale e' il tuo livello di conoscenza vba per capire che suggerimento darti; ad esempio sullo sviluppo di questa idea dove ti sei arenato?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per salvare scheda

Postdi erryrox » 19/04/12 23:25

Non sono in grado di programmare autonomamente una cosa del genere, anche perchè non conosco questo linguaggio.
Però conosco la logica di programmazione e se leggo dei pezzi codici riesco a capirli e sistemarli un pò...
Se mi puoi scrivere il codice per fare una cosa del genere te ne sarei molto grato! :)
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 20/04/12 18:34

Un qualche sospetto ce l' avevo...

Creati un foglio che chiami Indice
In C1 scrivi l' intestazione "Link"; poi tasto dx sul tab col nome del foglio, scegli Visualizza codice; inserisci questo codice nel frame di dx:
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckA = "C2:C1000"
If Intersect(Target, Range(CheckA)) Is Nothing Then Exit Sub
Application.Goto Reference:=Sheets(Target.Value).Range("A1"), scroll:=True
End Sub

Poi vai nella macro che ti avevo suggerito e inserisci l' istruzione marcata <<<
Codice: Seleziona tutto
ActiveSheet.Name = Range("A1").Value      '<<< La cella col nome
Sheets("Indice").Cells(Rows.count, "C").End(xlup).offset(1,0)=ActiveSheet.Name   '<<<
Sheets(sws).Select
End Sub

Prova e fai sapere, ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per salvare scheda

Postdi erryrox » 23/04/12 15:56

ciao anthony, l'ho provato e funziona benissimo, sei un grande!!! :)

però vorrei chiederti alcune cose a riguardo:
- questo metodo funziona anche se eseguo (tramite la macro) il salvataggio su un file esterno (cioè non all'interno della cartella di lavoro) ?????
- se clicco sulle celle della colonna C (dove si creano i "link") che sono vuote, mi compare l'errore che dice "indice non incluso nell'intervallo". c'è un modo per elimare questa cosa, magari facendo comparire un messaggio scritto da me???
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 23/04/12 20:28

questo metodo funziona anche se eseguo (tramite la macro) il salvataggio su un file esterno (cioè non all'interno della cartella di lavoro) ?????
Hai provato? Comunque "ogni problema ha la sua risposta".

se clicco sulle celle della colonna C (dove si creano i "link") che sono vuote, mi compare l'errore che dice "indice non incluso nell'intervallo"
In effetti era troppo semplificata la macro: modifica l' istruzione Application.Goto Reference:=Sheets(Target.Value).Range("A1"), scroll:=True
in
If Target.Value <> "" then Application.Goto Reference etc etc

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per salvare scheda

Postdi erryrox » 24/04/12 11:24

Ciao, mi da un errore sulla riga "Application go to...", anche se inserisco il nuovo pezzo di codice "if target value.."

questo è il codice adattato al mio caso:
Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
CheckA = "H1:H1000"
If Intersect(Target, Range(CheckA)) Is Nothing Then Exit Sub
If Target.Value <> "" then Application.Goto Reference:=Sheets(Target.Value).Range("A1"), Scroll:=True
End Sub


fammi sapere dove sbaglio! grazie
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi erryrox » 24/04/12 11:27

e questo è l'altro pezzo (che si attiva tramite un bottone):

Codice: Seleziona tutto
Sub SALVA_CSP()

Dim Risposta As VbMsgBoxResult
Risposta = MsgBox("Stai per salvare il questionario compilato, " & Chr(13) & "il file sarà disponibile in fondo alla cartella di lavoro." & Chr(13) & "Continuare?", vbYesNo)
If Risposta = vbNo Then
  Exit Sub
Else
'MsgBox "Per proseguire clicca su OK.",
End If

sws = "FORM"   '<<< Nome foglio da copiare
If ActiveSheet.Name <> sws Then Exit Sub
Sheets(sws).Copy after:=Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = Range("B4").Value      '<<< La cella col nome
Sheets("registro").Cells(Rows.Count, "H").End(xlUp).Offset(1, 0) = ActiveSheet.Name
Sheets(sws).Select
Range("F6:G25").Select             '<<< cancella il form compilato 
Selection.ClearContents
Range("F6").Select
Sheets("registro").Select
End Sub
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi erryrox » 24/04/12 11:32

P.S: L'ERRORE è RUN TIME 13, TIPO NON CORRISPONDENTE!! :)
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 24/04/12 13:50

Questo ti succede "doppiocliccando" in una cella vuota dell' intervallo H1:H1000? In tutte le celle vuote o solo qualcuna?
Se clicchi in una cella compilata il risultato e' corretto?
Puoi leggere, "guardando nella barra della formula e non nella cella", quale e' il contenuto di una cella che provoca l' errore?
Vorrei anche che riallegassi il codice della macro BeforeDoubleClick, "copiandolo" dall' editor delle macro e "incollandolo pari pari" nel prossimo messaggio.
Infine mi dici in che "modulo" tale macro e' posizionata, come puoi leggere nell' header della finestra di Microsoft Visual Basic?
Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro per salvare scheda

Postdi erryrox » 24/04/12 16:32

Scusa per la gran confusione, ma ora sembra che funzioni tutto anche aggiungendo l'IF.

Ho applicato la modifica (come dicevo in precedenza) di salvare il foglio non all'interno della cartella di lavoro, ma su un file esterno e sono riuscito anche a creare un percorso "mobile".

Il problema che non riesco a risolvere però è il seguente:
sul foglio "indice" dove si creano i link per aprire i fogli salvati se clicco mi da errore, perchè giustamente la macro cerca il foglio all'interno della cartella di lavoro. Si riesce a modificare questo comando??

ecco il codice del foglio indice:

Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
CheckA = "C2:C1000"
If Intersect(Target, Range(CheckA)) Is Nothing Then Exit Sub
If Target.Value <> "" Then
Application.Goto Reference:=Sheets(Target.Value).Range("A1"), scroll:=True
End If
End Sub


grazie per l'aiuto!
erryrox
Utente Junior
 
Post: 60
Iscritto il: 16/04/12 14:31

Re: macro per salvare scheda

Postdi Anthony47 » 24/04/12 23:25

Assodato che il problema originale e' risolto cerchiamo di capire la nuova impostazione...
Intanto, quando dici "Ho applicato la modifica (come dicevo in precedenza) di salvare il foglio non all'interno della cartella di lavoro, ma su un file esterno e sono riuscito anche a creare un percorso "mobile"" intendi che salvi la cartella in un altro file excel? Questo file e' aperto o potrebbe essere chiuso? Il file e' sempre lo stesso o cambia volta per volta? Puoi allegare il nuovo codice della macro che si attiva col pulsante?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "macro per salvare scheda":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti