Sviluppare funzionalita su Microsoft Office con VBA Problema macro registrata (utilizzabile solo su foglio di registrazione)

LoginRegistrati
Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
  • Autore
    Articoli
  • #29517 Risposta

    rikyravi
    Partecipante

      Ho registrato una macro in un foglio ("Alessandro Bourlot") e vorrei utilizzare questa macro anche su altri fogli della cartella. La macro è una macro personale ed inizia così:

      Sub Macro8()
      Selection.Copy
      ActiveCell.Offset(300, -2).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
      Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Application.CutCopyMode = False
      Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
      Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
      :="&", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
      1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
      , 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1)), _
      DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:= _
      True
      ActiveCell.Offset(0, 3).Range("AlessandroBourlot[[#Headers],[Colonna1]]").Select
      Selection.Copy
      ActiveCell.Offset(-300, 0).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
      Select

       

      Il problema è che vorrei cambiare il riferimento da Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _ a ogni foglio che io stia utilizzando. Qualcuno sa darmi un parere?

       

      #29532 Risposta
      PMC77
      PMC77
      Partecipante
        9 pts

        Ciao @RikiRavi!

        Allora, intanto ti consiglio sempre di allegare il file e non citarne solo la macro!

        Tu vuoi fare le stesse operazioni su tutti i fogli del tuo file Excel?

        Se si, basta inserire in un ciclo di scansione di tutti i fogli la tua macro e non utilizzare il valore fra "" del foglio ma il nome.

        Ciao

        Paolo

        #29537 Risposta

        rikyravi
        Partecipante

          Purtroppo non posso allegare il file perchè contiene contenuti personali e informazioni sensibili. Invece vorrei capire meglio come e dove inserire questo ciclo di scansione nella macro (non sono molto pratico di vba)

          #29543 Risposta
          PMC77
          PMC77
          Partecipante
            9 pts

            Senza file allegato (purgato dei dati sensibili), aiutarti diventa davvero difficile!

            Chissà, magari un buon samaritano lo trovi, ma dubito!

            Buona giornata!

            Paolo

            #29562 Risposta
            patel
            patel
            Moderatore
              42 pts

              Penso anch'io che sia difficile, non ho mai visto una macro registrata con quel tipo di notazione e non mi è chiaro cosa vuoi ottenere, io lascerei perdere la registrazione e spiegherei meglio allegando un file di ESEMPIO

              #29566 Risposta

              rikyravi
              Partecipante

                Allego allora una simil versione del file (esempio.xlsx), contenente un esempio di esso. Come potete vedere le pagine trattate sono formate ugualmente, semplicemente ci sono diverse scommesse sopra di esse (che in questo caso per esempio sono uguali). Il problema è che devo trasformare la stringa di testo che vedete nell'ultima casella "scommessa" in ogni foglio trasformandola in colonne utilizzando come delimitatore il carattere "&", per poi incolonnare nella giusta colonna ogni dato presente nella stringa. Il codice che mi permetteva di farlo, registrato tramite una macro molto rudimentale era il seguente (ogni codice lo posso tenere solo nella cratella macro personali, perchè il file deve rimanere un .xlsx)

                Sub Macro8()
                '
                ' Macro8 Macro
                '
                ' Scelta rapida da tastiera: CTRL+MAIUSC+V
                '
                    Selection.Copy
                    ActiveCell.Offset(300, -2).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    Application.CutCopyMode = False
                    Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
                        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
                        Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
                        :="&", FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, _
                        1), Array(6, 1), Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12 _
                        , 1), Array(13, 1), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1)), _
                        DecimalSeparator:=".", ThousandsSeparator:=",", TrailingMinusNumbers:= _
                        True
                    ActiveCell.Offset(0, 3).Range("AlessandroBourlot[[#Headers],[Colonna1]]").Select
                    Selection.Copy
                    ActiveCell.Offset(-300, 0).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveWindow.SmallScroll Down:=189
                    ActiveCell.Offset(300, 2).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, -3).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveWindow.SmallScroll Down:=48
                    ActiveCell.Offset(300, 4).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, 4).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveCell.Offset(300, -3).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, -2).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveWindow.SmallScroll Down:=84
                    ActiveCell.Offset(300, 4).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, 8).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveCell.Offset(300, -7).Range( _
                        "AlessandroBourlot[[#Headers],[Colonna1]:[Colonna2]]").Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, 2).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
                        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
                        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
                    Application.CutCopyMode = False
                    Selection.NumberFormat = "0.00"
                    ActiveCell.Offset(300, 0).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.Copy
                    ActiveWindow.SmallScroll Down:=-12
                    ActiveCell.Offset(-300, -6).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveCell.Offset(300, 7).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveCell.Offset(-300, -4).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveCell.Offset(300, 5).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Application.CutCopyMode = False
                    Selection.Copy
                    ActiveWindow.SmallScroll Down:=-15
                    ActiveCell.Offset(-300, -3).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    Application.CutCopyMode = False
                    Selection.TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _
                        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                        Semicolon:=False, Comma:=False, Space:=False, Other:=False, OtherChar _
                        :="&", FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
                    ActiveWindow.SmallScroll Down:=3
                    ActiveCell.Offset(300, 0).Rows("1:1").EntireRow.Select
                    Selection.Delete Shift:=xlUp
                    ActiveCell.Offset(-290, 12).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    ActiveCell.FormulaR1C1 = "=R[-10]C+0"
                    ActiveCell.Offset(0, 1).Range("AlessandroBourlot[[#Headers],[Colonna1]]").Select
                    ActiveCell.FormulaR1C1 = "=R[-10]C+0"
                    ActiveCell.Offset(0, -1).Range( _
                        "AlessandroBourlot[[#Headers],[Colonna1]:[Colonna2]]").Select
                    Selection.Copy
                    ActiveCell.Offset(-10, 0).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                        :=False, Transpose:=False
                    ActiveCell.Offset(10, 0).Range( _
                        "AlessandroBourlot[[#Headers],[Colonna1]:[Colonna2]]").Select
                    Application.CutCopyMode = False
                    Selection.ClearContents
                    ActiveCell.Offset(-10, -12).Range("AlessandroBourlot[[#Headers],[Colonna1]]"). _
                        Select
                End Sub
                

                Invece, nel caso potesse servirvi, allego un altro file (agenda-dei-guadagni.xlsm) (quello originale e il motivo per il quale le stringhe che mi vengono fornite sono in un formato non ottimale per il mio file) che essendo l'originale possiede una macro molto più professionale e precisa, che però non saprei come adattare al mio file in quanto le differenze sono molte. Il foglio da controllare in questo caso è il foglio "lista scommesse", e la stringa da incollare (come quella utilizzata da me in esempio nell'altro file "&14/01/2021 22:40&Scommesse&Efbet&P-B&Super Lig: Fenerbahce vs Ankaragucu&Fenerbahce&Betfair&NO&2021-01-18 17:00&1.45&1.41&100.00€ &106.62€ &Fenerbahce&NR&0.05" è da incollare nella casella della data e si aggiusta automaticamente

                Allegati:
                You must be logged in to view attached files.
                #29569 Risposta

                rikyravi
                Partecipante

                  La mia macro oltretutto su questo foglio di esempio nemmeno funziona e non ne comprendo il motivo

                LoginRegistrati
                Stai vedendo 7 articoli - dal 1 a 7 (di 7 totali)
                Rispondi a: Problema macro registrata (utilizzabile solo su foglio di registrazione)
                Gli allegati sono permessi solo ad utenti REGISTRATI
                Le tue informazioni:



                vecchio frac - 2750 risposte

                albatros54
                albatros54 - 1038 risposte

                patel
                patel - 1032 risposte

                Marius44
                Marius44 - 922 risposte

                Luca73
                Luca73 - 750 risposte