Sviluppare funzionalita su Microsoft Office con VBA PageSetup MEMORIA INSUFFICIENTE

Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #24411 Score: 0 | Risposta

    ABRAMO48
    Partecipante
      1 pt
       Set SS = Workbooks("STAMPA.xls").Worksheets("Foglio1")  
       RIG = SS.Range("BM3") + 10
       With SS.PageSetup
              .PrintTitleRows = "$1:$10"
              .PrintTitleColumns = ""
              .PrintArea = "A10:BK" & RIG
              .Orientation = xlPortrait
              .Zoom = False
              .FitToPagesWide = 1
              .FitToPagesTall = 2
              .CenterHorizontally = True
      End With

      durante l'esecuzione di una macro di stampa, la sub, arrivata all'istruzione di cui sopra, da errore di MEMORIA INSUFFICIENTE.

      Ho provato a separare le varie opzioni per vedere quale poteva essere quella che dava l'errore, ma, comunque scambiate, l'errore si ripeteva, sempre, nell'esecuzione dell'ultima di turno.

      Avete idea del perché? l'intera sub è questa (l'istruzione PageSetup è spezzata nelle varie opzioni per vedere quale poteva essere quella che causava l'errore, ma come detto, l'errore è sempre sull'ultima, comunque scambiate)

      Sub C_STA_COD()
      '
          Set MM = Workbooks("LOGISTA_MACRO.xls").Worksheets("MACRO")
      
          Call X_MSG_ini("", "STAMPA ORDINE CALCOLO", -1)
          
          Call X_MSG_ese("Controllo Esecuzione ...")
      
      ' *** NON ESEGUIRE SE NO CALCOLO
      If MM.Cells(18, "W") <> "CALCOLO" Then
          Call X_MSG_err("NO ORDINE CALCOLO")
          End
      End If
      
          Call X_MSG_beg("STAMPA PER CODICE FIT", "", 25)
          
          Call C_CANCELLA
      
          PERCORSOX = MM.Range("A34").Value
          PERCORSOY = MM.Range("A35").Value
      If CC.Cells(1, "A") = "_ORDINE" Then
          PERCORSOZ = PERCORSOX
      Else
          PERCORSOZ = PERCORSOY
      End If
      
      If MM.Cells(21, "I") = "VENDITE" Then
          Call X_SAVE(PERCORSOX, "LOGISTA_VENDITE.xls")
          Call X_CLOSE("LOGISTA_VENDITE.xls")
      End If
          
          Call M_CALC_NASCONDI
          
      ' *** SALVA ORDINE CALCOLO
          Call X_MSG_ese("Salva ORDINE_CALCOLO ...")
          Call X_SAVE(PERCORSOZ, "ORDINE_CALCOLO.xls")
          
      ' *** CREA STAMPA
          Call X_MSG_ese("Crea Ordine Stampa ...")
          Call X_CLOSE("STAMPA.xls")
          Call X_SAVEAS(PERCORSOX, "ORDINE_CALCOLO.xls", "STAMPA.xls")
          Set SS = Workbooks("STAMPA.xls").Worksheets("Foglio1")
          
          SS.Unprotect
        
      ' *** VALORI
          Call X_MSG_ese("Valori ...")
          SS.Range("A1:X400") = SS.Range("A1:X400").Value
          SS.Range("Z1:DZ400") = SS.Range("Z1:DZ400").Value
           
      ' *** BIANCO NERO
          Call X_MSG_ese("Bianco e Nero ...")
          SS.Range("A11:DZ400").Interior.ColorIndex = xlNone
          SS.Range("A11:DZ400").Font.ColorIndex = 1
          
      ' *** TITOLO
          Call X_MSG_ese("Titolo ...")
      If SS.Cells(1, "A") = "_ORDINE" Then
          SS.Cells(2, "A") = "LOGISTA_CALCOLO PER ORDINE LOGISTA"
      Else
          SS.Cells(2, "A") = "LOGISTA_CALCOLO PER CARICO MATRIX"
      End If
          
      ' *** ORDINA PER CODICE
          Call X_MSG_ese("Ordina per Codice FIT ...")
          SS.Rows("11:400").Sort Key1:=SS.Range("BM11"), Order1:=xlDescending, _
                                               Key2:=SS.Range("A11"), Order2:=xlAscending
          
      ' *** ZEBRA
          Call X_MSG_ese("Zebrato ...")
          ZEBRA = 40
      With SS.Range("A11:Y11")
          .Borders(xlEdgeTop).LineStyle = xlNone
          .Borders(xlEdgeBottom).LineStyle = xlNone
          .Borders(xlEdgeRight).LineStyle = xlNone
          .Interior.ColorIndex = ZEBRA
      End With
      With SS.Range("A12:Y12")
          .Borders(xlEdgeTop).LineStyle = xlNone
          .Borders(xlEdgeBottom).LineStyle = xlNone
          .Borders(xlEdgeRight).LineStyle = xlNone
          .Interior.ColorIndex = xlNone
      End With
          SS.Range("A11:Y12").Copy
          SS.Range("A13:Y400").PasteSpecial Paste:=xlFormats
      
      ' *** COLONNE
          Call X_MSG_ese("Colonne ...")
          SS.Columns("B:C").EntireColumn.Hidden = True
          SS.Columns("F:F").EntireColumn.Hidden = True
          SS.Columns("H:N").EntireColumn.Hidden = True
          SS.Columns("O:O").EntireColumn.Hidden = True
          SS.Columns("W:W").EntireColumn.Hidden = True
          SS.Columns("V:X").EntireColumn.Hidden = True
          SS.Columns("Z:CU").EntireColumn.Hidden = True
          SS.Columns("CW:DZ").EntireColumn.Hidden = True
          SS.Columns("D:D").ColumnWidth = 55
          SS.Columns("P:P").ColumnWidth = 17
          SS.Columns("Q:Q").ColumnWidth = 15
          SS.Columns("R:R").ColumnWidth = 15
          
      ' *** FORMATI
          Call X_MSG_ese("Formati ...")
          SS.Range("G11:G400") = " "
          
      ' *** CARATTERE
          Call X_MSG_ese("Carattere ...")
          SS.Range("A11:CV400").Font.Size = 14
          
      ' *** PAGINA
          Call X_MSG_ese("Pagina ...")
          RIG = SS.Range("BM3") + 10
          Call X_MSG_ese("Pagina Title ...")
              SS.PageSetup.PrintTitleRows = "$1:$10"
          Call X_MSG_ese("Pagina Area ...")
              SS.PageSetup.PrintArea = "A10:CV" & RIG
          Call X_MSG_ese("Pagina Wide ...")
              SS.PageSetup.FitToPagesWide = 1
           Call X_MSG_ese("Pagina Tall ...")
              SS.PageSetup.FitToPagesTall = 2
          'Call X_MSG_ese("Pagina Columns ...")
              'SS.PageSetup.PrintTitleColumns = ""
          'Call X_MSG_ese("Pagina Orientation ...")
              'SS.PageSetup.Orientation = xlPortrait
          'Call X_MSG_ese("Pagina Zoom ...")
              'SS.PageSetup.Zoom = False
          'Call X_MSG_ese("Pagina Horizontally ...")
              'SS.PageSetup.CenterHorizontally = True
      
          Call C_STA_FONT_C
      
      ' *** STAMPA
          Call X_MSG_ese("Stampa ...")
          SS.PrintOut Copies:=1
      
      ' *** CHIUDE STAMPA
          Call X_MSG_ese("Chiude Ordine Stampa ...")
          Call X_SAVE(PERCORSOX, "STAMPA.xls")
          Call X_CLOSE("STAMPA.xls")
      
      ' *** RIAPRE ORDINE_CALCOLO
          Call X_MSG_ese("Riapre Ordine Calcolo ...")
          Call X_OPEN(PERCORSOZ, "ORDINE_CALCOLO.xls")
          
          Call X_OPEN(PERCORSOX, "LOGISTA_VENDITE.xls")
          
          MM.Activate
      
          MM.Cells(15, "W") = ""
          
          Call X_MSG_end("STAMPA PER CODICE FIT", "", "", 25)
      '
      End Sub
      #24412 Score: 0 | Risposta

      patel
      Moderatore
        51 pts

        la riga

        .PrintArea = "A10:BK" & RIG

        è corretta ? mi sembra un range di colonne troppo esteso  da A a BK

        #24413 Score: 0 | Risposta

        ABRAMO48
        Partecipante
          1 pt

          In realtà, coerente con la sub allegata sarebbe "CV" invece che "BK" (sono tre stampe diverse).

          Molte colonne sono nascoste, le colonne in stampa sono una decina ...

          #24431 Score: 0 | Risposta

          patel
          Moderatore
            51 pts

            prova la macro con un range molto più limitato e vedi se l'errore scompare

          Login Registrati
          Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
          Rispondi a: PageSetup MEMORIA INSUFFICIENTE
          Gli allegati sono permessi solo ad utenti REGISTRATI
          Le tue informazioni: