Di una cartella salvare una copia solo di un foglio specifico

Anonimo
2010-10-17T11:30:25+00:00

Di una cartella devo salvare una copia solo del Foglio "Anni" con nome "NomeFile Anno " e l'anno della cella H2 (che è una data "gg/mm/aaaa"), possibilmente nella stessa directory (percorso) in cui si trova il file di partenza.

Ho adattato la seguente macro con cui vado a salvare un nuovo file:

Private Sub CommandButton2_Click()

Dim X As String

Dim P As String

Dim N As String

Dim sFile As String

X = Application.ActiveWorkbook.Path

P = X & "\NomeFile Anno "

If Sheets("Anni").Range("H2") = "" Then

MsgBox "Nessun Anno selezionato"

Else

N = Year(Sheets("Anni").Range("H2"))

sFile = P & N & ".xls"

If Dir(sFile) <> "" Then

If MsgBox("file " & sFile & " esiste già" & _

vbCrLf & "sovrascrivo?", vbCritical + vbYesNo, _

"ATTENZIONE") = vbNo Then GoTo Fine

MsgBox "Il File NomeFile Anno " & N & " salvato"

End If

Sheets("Anni").Select

Sheets("Anni").Copy

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:=sFile

ActiveWorkbook.Close Filename:=sFile

Application.DisplayAlerts = True

End If

Fine:

End Sub

Ho notato che se utilizzo la versione 2007 non funziona bene, cioè salva la copia del foglio "Anni" con nome indicato, ma poi se apro il file salvato mi dice con versione 2007 mi da avviso "Il formato del file che si sta tentando di aprire, "Nomefile.xls", è diverso da quello specificato dall'estensione del file. Prima di aprire verifcare che non sia danneggiato e che provenga da una fonte attendibile. Aprire il file? SI NO ?" digitando SI mi apre regolarmente; se invece apro con versione 2002 ho il seguente avviso "Impossibile riconoscere il formato del file. se il file appartiene a un altro programma incompatibile ... ecc." e se premo "OK" sballa tutto il file che diventa illegibile.

Utilizzando direttamente la versione 2002 se salvo copia foglio "Anni", poi apro regolarmente sia con 2002 che con 2007. Potete indicarmi dove sbaglio? Grazie e una buona Domenica  at utti.

Ciao

Antonio

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
Risposta accettata dall'autore della domanda
Anonimo
2010-10-18T08:55:34+00:00

Di una cartella devo salvare una copia solo del Foglio "Anni" con nome "NomeFile Anno " e l'anno della cella H2 (che è una data "gg/mm/aaaa"), possibilmente nella stessa directory (percorso) in cui si trova il file di partenza.

Ho adattato la seguente macro con cui vado a salvare un nuovo file:

Private Sub CommandButton2_Click()

Dim X As String

Dim P As String

Dim N As String

Dim sFile As String

X = Application.ActiveWorkbook.Path

P = X & "\NomeFile Anno "

If Sheets("Anni").Range("H2") = "" Then

MsgBox "Nessun Anno selezionato"

Else

N = Year(Sheets("Anni").Range("H2"))

sFile = P & N & ".xls"

If Dir(sFile) <> "" Then

If MsgBox("file " & sFile & " esiste già" & _

vbCrLf & "sovrascrivo?", vbCritical + vbYesNo, _

"ATTENZIONE") = vbNo Then GoTo Fine

MsgBox "Il File NomeFile Anno " & N & " salvato"

End If

Sheets("Anni").Select

Sheets("Anni").Copy

Application.DisplayAlerts = False

ActiveWorkbook.SaveAs Filename:=sFile

ActiveWorkbook.Close Filename:=sFile

Application.DisplayAlerts = True

End If

Fine:

End Sub

Ho notato che se utilizzo la versione 2007 non funziona bene, cioè salva la copia del foglio "Anni" con nome indicato, ma poi se apro il file salvato mi dice con versione 2007 mi da avviso "Il formato del file che si sta tentando di aprire, "Nomefile.xls", è diverso da quello specificato dall'estensione del file. Prima di aprire verifcare che non sia danneggiato e che provenga da una fonte attendibile. Aprire il file? SI NO ?" digitando SI mi apre regolarmente; se invece apro con versione 2002 ho il seguente avviso "Impossibile riconoscere il formato del file. se il file appartiene a un altro programma incompatibile ... ecc." e se premo "OK" sballa tutto il file che diventa illegibile.

Utilizzando direttamente la versione 2002 se salvo copia foglio "Anni", poi apro regolarmente sia con 2002 che con 2007. Potete indicarmi dove sbaglio? Grazie e una buona Domenica  at utti.

Ciao

Antonio

Prova così:

Public Sub m()

    Dim sh As Worksheet

    Dim sPath As String

    Dim sNomeFile

    Dim lRisposta As Long

    Set sh = ThisWorkbook.Worksheets("Anni")

    sPath = ThisWorkbook.Path & "\NomeFile Anno "

    Application.ScreenUpdating = False

    With sh

        If .Range("H2").Value = "" Then

             MsgBox "Nessun anno selezionato."

            Exit Sub

        End If

        sNomeFile = sPath & Year(.Range("H2").Value) & ".xls"

        If Dir(sNomeFile) <> "" Then

            lRisposta = _

                MsgBox(Prompt:="Il file: " & sNomeFile & " esiste già. Sovrascriverlo?.", _

                Title:="Attenzione", _

                Buttons:=vbYesNo + vbQuestion)

            If lRisposta = vbNo Then Exit Sub

       End If

        Application.CutCopyMode = False

        Sheets(.Name).Copy

        Workbooks(ActiveWorkbook.Name).SaveAs Filename:=sNomeFile, FileFormat:=xlExcel8

        ActiveWorkbook.Close

    End With

    Application.ScreenUpdating = True

    Set sh = Nothing

End Sub

Nella guida del vb di excel vedi anche: Costante enumerata XlFileFormat.

Fai sapere se risolvi, grazie.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

3 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2010-10-19T14:38:43+00:00

    OK grazie, gentilissimo.

    Ciao

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2010-10-19T06:54:52+00:00

    Ciao Mauto, scusa il ritardo ma non mi ero collegato; grazie del codice ho provato e va tutto OK con entrambe le versione; se posso approfitto per altro problema inerente, sul foglio "Anni" originale  ho due commandbutton di cui al commandbutton2 la macro in questione, nenel file salvato (copia foglio) vorrei evitare di riportare i due pulsanti con relativo codice.; se non fattibile altrimenti metto esecuzione in una form esterna. Grazie infinite e buona serata.

    Ciao

    Antonio

    Utilizzare due combinazioni tipo CTRL+a/CTRL+s al posto dei pulsanti? Semplificando, una alternativa è nasconderli:

    Public Sub m()

        Foglio1.OLEObjects("CommandButton1").Visible = False

        Foglio1.OLEObjects("CommandButton2").Visible = False

    End Sub


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2010-10-18T19:17:39+00:00

    Ciao Mauto, scusa il ritardo ma non mi ero collegato; grazie del codice ho provato e va tutto OK con entrambe le versione; se posso approfitto per altro problema inerente, sul foglio "Anni" originale  ho due commandbutton di cui al commandbutton2 la macro in questione, nenel file salvato (copia foglio) vorrei evitare di riportare i due pulsanti con relativo codice.; se non fattibile altrimenti metto esecuzione in una form esterna. Grazie infinite e buona serata.

    Ciao

    Antonio

    La risposta è stata utile?

    0 commenti Nessun commento