Macro per inserimento sequenziale di una stringa in un campo di un foglio e salvataggio con stesso nome

Anonimo
2015-06-19T11:17:25+00:00

Buongiorno e grazie a chi mi vorrà rispondere,

ho un foglio di lavoro excell che riproduce un questionario da compilare. La cella M9 è vuota e serve per inserire il codice del campione.

Avrei bisogno di: inserire i codici campione sequenzialmente e salvare tutti i fogli con il nome del codice (es. Codice A406, nome file A406).

I codici campione sono in un'altro file excell nelle celle (C2:C146) e non sono sequenziali.

Grazie

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
2015-06-19T13:04:52+00:00

Ciao Alessandro,

Apri il file che contiene i codici campioni e prova qualcosa del genere:

  • Alt-F11 per aprire entrare l'ambiente VBA
  • Alt-IM per inserire un nuovo modulo di codice
  • Nel nuovo modulo vuoto, incolla il seguente codice:

'=========>>

Option Explicit

'--------->>

Public Sub Tester()

    Dim srcWB As Workbook, destWB As Workbook

    Dim srcSH As Worksheet, destSH As Worksheet

    Dim srcRng As Range, destRng As Range, rCell As Range

    Dim sPath As String

    Dim sStr As String, aStr As String

    Const sCellaDaCompilare As String = "M9"

    Const sFogliodaDaCompilare As String = "Foglio1"                             '<<===== Modifica

    Const sFoglioNomi As String = "ElencoCodici"                  '<<===== Modifica

    Const sIntervalloCodici As String = "C2:C146"

    Const sFileDaCompilare As String = "Questionario.xlsx"        '<<===== Modifica

    Const sPercorso As String = "**C:\Users\Alessandro\Documenti**"       '<<===== Modifica

    On Error GoTo XIT

    Set destWB = Workbooks.Open(sPath & sFileDaCompilare)

    Set destSH = destWB.Sheets(sFogliodaDaCompilare)

    Set destRng = destSH.Range(sCellaDaCompilare)

    With Application

        sStr = .PathSeparator

        .ScreenUpdating = False

    End With

    If Right(sPercorso, 1) >= sStr Then

        sPath = sPercorso

    Else

        sPath = sPercorso & sStr

    End If

    Set srcWB = ThisWorkbook

    Set srcSH = srcWB.Sheets(sFoglioNomi)

    Set srcRng = srcSH.Range(sIntervalloCodici)

    For Each rCell In srcRng.Cells

        aStr = rCell.Value

        If Not aStr = vbNullString Then

            destRng.Value = aStr

            destWB.SaveCopyAs aStr & ".xlsx"

        End If

    Next rCell

    destWB.Close SaveChanges:=False

XIT:

    Application.ScreenUpdating = True

End Sub

'--------->>

Public Function LastRow(SH As Worksheet, _

                        Optional Rng As Range)

    If Rng Is Nothing Then

        Set Rng = SH.Cells

    End If

    On Error Resume Next

    LastRow = Rng.Find(What:="*", _

                       after:=Rng.Cells(1), _

                       Lookat:=xlPart, _

                       LookIn:=xlFormulas, _

                       SearchOrder:=xlByRows, _

                       SearchDirection:=xlPrevious, _

                       MatchCase:=False).Row

    On Error GoTo 0

End Function

'<<========= 

  • Alt-Q per chiudere l'editor di VBA e tornare a Excel.
  • Salva il file con l'estensione xlsm
  • Alt-F8 per aprire  la finestra di gestione delle macro
  • Seleziona Tester | Esegui

Non ho capito la necessità di salvare il nuovi file sequenzialmente in quanto possono essere visualizzati o aperti in sequenza alfabetica indipendentemente dalla sequenza di creazione. Se, tuttavia. ci fosse qualche importante motivo, sarebbe molto facile da modificare il codice di conseguenza.

===

Regards,

Norman

La risposta è stata utile?

0 commenti Nessun commento

10 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2015-06-19T13:42:33+00:00

    Ciao Maurizio,

    Ah, ah...

    Qui si dice: flic o floc?

    Non avevo mai sentito questa espressione, ma me ne ricorderò. Grazie!

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2015-06-19T13:34:33+00:00

    Ah, ah...

    Qui si dice: flic o floc?

    Ciao Grande Norman.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2015-06-19T13:17:01+00:00

    Ciao Maurizio,

    non capisco l'esigenza di inserire i codici campione sequenzialmente: anche se li inserisci a casaccio, una volta salvati i file è il sistema operativo che te li mostra nella sequenza ordinata scelta da te: per nome file, per data di creazione, di salvataggio...

    Come si dice qui, great minds think alike :-)

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2015-06-19T13:04:00+00:00

    Ciao AlessandroGori,

    non capisco l'esigenza di inserire i codici campione sequenzialmente: anche se li inserisci a casaccio, una volta salvati i file è il sistema operativo che te li mostra nella sequenza ordinata scelta da te: per nome file, per data di creazione, di salvataggio...

    Spiega, per favore.

    La risposta è stata utile?

    0 commenti Nessun commento