Condividi tramite

Creare un nome file in automatico

Anonimo
2013-01-29T14:28:37+00:00

Buongiorno a tutti.

Proverò ad essere il più chiaro possibile su quanto ho bisogno.

Su un foglio excel ho già attiva la seguente macro:

Public Sub s()

    Dim sh As Worksheet

    Dim sPath As String

    Dim sNomeFile As Variant

    Dim lRisposta As Long

    Set sh = ThisWorkbook.Worksheets("Foglio2")

    sPath = "Y:\Giro librerie\2 - INSTALL RPR - PRO\NEW ITER\STORICO INSTALLAZIONI"

    If Dir(sPath, vbDirectory) = "" Then MkDir sPath

    Application.ScreenUpdating = False

    With sh

        If Not IsDate(.Range("R2").Value) Then

             MsgBox "Nessuna data trovata!"

             Set sh = Nothing

            Exit Sub

        End If

        sNomeFile = InputBox("Inserisci il nome del file da salvare" _

            , "... salvataggio file ...")

        If sNomeFile = Empty Then

            MsgBox "Non hai specificato nulla" & vbNewLine _

                & "Verrà utilizzato il nome PIPPO.XLSM"

            sNomeFile = "PIPPO.XLSM"

        ElseIf Right(sNomeFile, 5) <> ".xlsm" Then

            sNomeFile = sNomeFile & ".xlsm"

        End If

        sNomeFile = sPath & sNomeFile

        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

        .Copy

        ActiveWorkbook.SaveAs Filename:=sNomeFile, FileFormat:=xlOpenXMLWorkbookMacroEnabled

        ActiveWorkbook.Close

    End With

    Application.ScreenUpdating = True

    Set sh = Nothing

End Sub

che praticamente mi permette di salvare un foglio di lavoro del file excel in una determinata cartella aprendomi una finestra di pop up dove devo inserire il nome del file.

La mia necessità è di poter in automatico salvare il foglio di lavoro impostando automaticamente il nome del file da salvare andando a crearlo prendendo nell'ordine le parole presenti in quattro differenti celle del  file excel stesso.

Esempio:

nelle seguenti celle ci sono i seguenti nomi:

A1: pippo

B1: pluto

C1: paperino

D1: 29 gennaio 2013

il nome in automatico del file da salvare dovrebbe essere così composto: pippo (spazio) pluto (spazio) paperino (spazio) 29 gennaio 2013.

Se si riuscisse ad integrare quanto sopra necessito nella macro già esistente sarebbe perfetto!

Spero di essere stato abbastanza chiaro.

Nel caso sono a piena disposizione.

Ringrazio tutti in anticipo.

Max

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

  1. Anonimo
    2013-01-29T14:54:07+00:00

    Ciao pedmas,

    un modo potrebbe essere il seguente, ma ho diverse perplessità che ho indicato nel codice:

    Public Sub s()

    On Error GoTo ErrH

    Dim sh        As Excel.Worksheet

    Dim sPath     As String

    Dim sNomeFile As String

        sPath = "Y:\Giro librerie\2 - INSTALL RPR - PRO\NEW ITER\STORICO INSTALLAZIONI"

        Set sh = ThisWorkbook.Worksheets("Foglio2")

        With sh

          If Not IsDate(.Range("R2").Value) Then ' "R2" ?

            MsgBox "Nessuna data trovata!"

            Set sh = Nothing

            Exit Sub

          End If

          ' Nessun controllo sul contenuto di queste

          ' quattro celle?

          sNomeFile = .Range("A1").Value _

                    & " " & .Range("B1").Value _

                    & " " & .Range("C1").Value _

                    & " " & .Range("D1").Text

          If Dir(sPath, vbDirectory) = "" Then MkDir sPath

          sNomeFile = sPath & sNomeFile & ".xlsm"

          Application.ScreenUpdating = False

          ' Ma poi dove Incolly?

          .Copy

          ' Però l'ActiveWorkbook non è cambiato ancora...

          ActiveWorkbook.SaveAs Filename:=sNomeFile _

                              , FileFormat:=xlOpenXMLWorkbookMacroEnabled

          ActiveWorkbook.Close

        End With

    ExtP:

        Application.ScreenUpdating = True

        Set sh = Nothing

        Exit Sub

    ErrH:

        MsgBox Err.Description

        Resume ExtP

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2013-01-29T14:53:44+00:00

     

     

    A1: pippo

    B1: pluto

    C1: paperino

    D1: 29 gennaio 2013

     

    il nome in automatico del file da salvare dovrebbe essere così composto: pippo (spazio) pluto (spazio) paperino (spazio) 29 gennaio 2013.

     

    Se si riuscisse ad integrare quanto sopra necessito nella macro già esistente sarebbe perfetto!

     

    <cut>

    Max

    Capito poco.

    Prova (in una file copia) questo:

    Public Sub s()

        Dim sh As Worksheet

         Dim sPath As String

         Dim sNomeFile As Variant

         Dim lRisposta As Long

        Set sh = ThisWorkbook.Worksheets("Foglio2")

         sPath = "Y:\Giro librerie\2 - INSTALL RPR - PRO\NEW ITER\STORICO INSTALLAZIONI"

        If Dir(sPath, vbDirectory) = "" Then MkDir sPath

        Application.ScreenUpdating = False

        With sh

             If Not IsDate(.Range("R2").Value) Then

                  MsgBox "Nessuna data trovata!"

                  Set sh = Nothing

                 Exit Sub

             End If

            sNomeFile = NomeFoglio.Range("A1").Value & " " _

                & NomeFoglio.Range("B1").Value & " " _

                & NomeFoglio.Range("C1").Value & " " _

                & NomeFoglio.Range("D1").Text

            sNomeFile = sNomeFile & ".xlsm"

            sNomeFile = sPath & sNomeFile

            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

            .Copy

             ActiveWorkbook.SaveAs Filename:=sNomeFile, FileFormat:=xlOpenXMLWorkbookMacroEnabled

             ActiveWorkbook.Close

        End With

        Application.ScreenUpdating = True

        Set sh = Nothing

    End Sub

    La risposta è stata utile?

    0 commenti Nessun commento

15 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2013-01-29T15:34:13+00:00

    Le 4 celle sono tutte nel Foglio1...adesso provo...

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2013-01-29T15:32:54+00:00

    Grazie mille per la risposta.

     

    Se provo a lanciare la macro mi rilascia una finestra con scritto NECESSARIO OGGETTO...?

     

    <cut>

    Scusa. Devi ovviamente modificare NomeFoglio con il nome del foglio dove si trovano le celle.

    Se sono nel Foglio2, Maurizio ha già postato il codice corretto. Altrimenti metti il nome dei fogli, perchè io non ho capito se le 4 celle sono tutte nello stesso foglio e in quale.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2013-01-29T15:20:03+00:00

    Grazie mille per la risposta.

    Se provo a lanciare la macro mi rilascia una finestra con scritto NECESSARIO OGGETTO...?

    Provo ad essere più chiaro su quanto ho bisogno:

    Attualmente la macro mi proponeva in automatico un box dove scrivere il nopme del file che andava a salvare in una determinata cartella in rete.

    Ora avrei bisogno che il nome del file venisse generato in automatico aggregando il contenuto delle 4 celle indicate quindi nel mio esempio mi aspetto che il nome file che mi viene proposto in automatico sia 'pippo_pluto_paperino_29 gennaio 2013'

    La risposta è stata utile?

    0 commenti Nessun commento