Spezzo il codice in più post, visto che non me lo fa inserire tutto:

codice:
    Dim AX As Excel.Application
    Dim WB As Workbook
    Dim WS As Worksheet
    Dim RG As Range
    Dim RG1 As Range
    Dim fFileName As String
    Dim strSql As String
    Dim strSql2 As String
    Dim strSql3 As String
    Dim strSql4 As String
    Dim strSql5 As String
    Dim vRigheDettaglio As Integer
    Dim vCicli As Integer
    Dim numero As Integer
    Dim vConta As Integer
    Dim X As Integer
    Dim Y As Integer
    Dim X_Rif As Integer
    Dim vIdAttenzioneDocumento As Integer
    Dim vCorteseAttenzioneDocumento As String
    Dim varArray As Variant
    Dim varItem As Variant
    Dim vPiva As String
    Dim vCodFisc As String
    Dim vCongresso As String
    Dim vNumDocumento As Integer
    Dim vDataDocumento As String
    Dim vCondDocumento As String
    Dim vTotImpFornEuro As Double
    Dim vTotImponibile As Double
    Dim vTotIva As Double
    Dim vAcconto As Double
    Dim vTotDocumento As Double
    Dim vStatoFattura As String
    Dim vDataRiferimento As String
    Dim vNumRifFattura As Integer
    Dim vDataRifFattura As String
    Dim vStringaRiferimento As String
    Dim i As Integer
    Dim i_iva As Integer
    Dim xRangeInizio As String
    Dim xRangeFine As String
    Dim vAnagrafica As String
    Dim vEtichetta As String
    Dim vColore As String
    Dim vColoreImporto
    Dim vDocumento As String
    Dim vNomeFile As String
    Dim contaDettaglio As Integer
    Dim X_cod As Integer
    Dim vTopQuery As Integer
    Dim vDescrizione As String
    Dim vCongressoDiviso As String
    Dim vACapo As Boolean
    Dim X_Cli As Integer
    
    On Error GoTo Error
    
    Me.MousePointer = vbHourglass
    
    Set AX = New Excel.Application
    
    Set WB = AX.Workbooks.Add
    
    Set WS = WB.Worksheets(1)
    
    With AX.Worksheets(1).PageSetup
        .LeftMargin = AX.InchesToPoints(0.39370078740157)
        .RightMargin = AX.InchesToPoints(0.39370078740157)
        .TopMargin = AX.InchesToPoints(0.39370078740157)
        .BottomMargin = AX.InchesToPoints(0.39370078740157)
        .HeaderMargin = AX.InchesToPoints(0.511811023622047)
        .FooterMargin = AX.InchesToPoints(0.511811023622047)
    End With
    
    vConta = 0
    X = 1
    X_Rif = 6
    Y = 12
    vACapo = False
    
    'Ciclo principale per stampa su più pagine ove necessario
    For vCicli = 1 To vNumPagine
        If vCicli > 1 Then
            If vPiva = "" Then
                X = X + 9
            Else
                Select Case (vConta)
                    Case 1
                        If vACapo Then
                            X = X + 11 '8 (da ripristinare)
                        Else
                            X = X + 12 '9 (da ripristinare)
                        End If
                    Case 2
                        If vACapo Then
                            X = X + 10 '7 (da ripristinare)
                        Else
                            X = X + 11 '8 (da ripristinare)
                        End If
                    Case 3
                        If vACapo Then
                            X = X + 9  '6 (da ripristinare)
                        Else
                            X = X + 10 '7 (da ripristinare)
                        End If
                End Select
                X_Rif = X_Rif + 63
                Y = Y + 62
                vConta = 0
            End If
            Select Case (vCicli)
                Case 2
                    vTopQuery = 54 '30 (da ripristinare)
                Case 3
                    vTopQuery = 81 '90 (da ripristinare)
                Case 4
                    vTopQuery = 108 '120 (da ripristinare)
                Case 5
                    vTopQuery = 135 '150 (da ripristinare)
                Case 6
                    vTopQuery = 162 '180 (da ripristinare)
                Case 7
                    vTopQuery = 189 '210 (da ripristinare)
                Case 8
                    vTopQuery = 216 '240 (da ripristinare)
                Case 9
                    vTopQuery = 243 '270 (da ripristinare)
                Case 10
                    vTopQuery = 270 '300 (da ripristinare)
                Case 11             '    (togliere in caso di ripristino)
                    vTopQuery = 297 '300 (togliere in caso di ripristino)
            End Select
        End If
        
        'Stampa del logo
        Set RG = WS.Range("A" & X, "C" & X)
        RG.Merge
        Select Case (vCicli)
            Case 1
                WS.Range("A2:C2").Select
                With WS.Pictures.Insert(App.Path & "\FondoClicart.gif")
                    .Left = WS.Range("A2").Left
                    .Top = WS.Range("A2").Top
                End With
            Case 2
                WS.Range("A65:C65").Select
                With WS.Pictures.Insert(App.Path & "\FondoClicart.gif")
                    .Left = WS.Range("A65").Left
                    .Top = WS.Range("A65").Top
                End With
            Case 3
                WS.Range("A128:C128").Select
                With WS.Pictures.Insert(App.Path & "\FondoClicart.gif")
                    .Left = WS.Range("A128").Left
                    .Top = WS.Range("A128").Top
                End With
            Case 4
                WS.Range("A191:C191").Select
                With WS.Pictures.Insert(App.Path & "\FondoClicart.gif")
                    .Left = WS.Range("A191").Left
                    .Top = WS.Range("A191").Top
                End With
        End Select
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75
        
        If Me.txtCodRif.Text <> "-" Then
            X_cod = X + 2
            'Inizio stampa sezione Cod. Rif. (solo se valorizzato)
            Set RG1 = WS.Range("I" & X_cod)
            RG1.Font.Name = "Arial"
            RG1.Font.Size = 10
            RG1.Font.Color = &H800000
            RG1.Font.Bold = True
            RG1.Merge
            RG1.Value = "Cod. Rif.:"
            WS.StandardWidth = 8
            WS.Cells.RowHeight = 12.75
            
            Set RG1 = WS.Range("J" & X_cod, "K" & X_cod)
            RG1.Font.Name = "Arial"
            RG1.Font.Size = 10
            RG1.Font.Color = &H800000
            RG1.Font.Bold = True
            RG1.Merge
            RG1.Value = Me.txtCodRif.Text
            WS.StandardWidth = 8
            WS.Cells.RowHeight = 12.75
            'Fine stampa sezione Cod. Rif. (solo se valorizzato)
        End If
        
        X = X + 6
        X_Cli = X - 1
        
        '1 Riga - prima parte in grassetto
        Set RG1 = WS.Range("A" & X_Cli, "B" & X_Cli)
        RG1.Font.Name = "Arial"
        RG1.Font.Size = 8
        RG1.Font.Color = &H800000
        RG1.Font.Bold = True
        RG1.Merge
        RG1.Value = "di G. La Rosa & C. sas"
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75
        
        '1 Riga - seconda parte senza grassetto
        Set RG1 = WS.Range("C" & X_Cli, "E" & X_Cli)
        RG1.Font.Name = "Arial"
        RG1.Font.Size = 8
        RG1.Font.Color = &H800000
        RG1.Merge
        RG1.Value = "Via Aiace, 4 - 90151 Palermo"
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75
        
        X = X + 1
        X_Cli = X_Cli + 1
        
        '2 Riga
        Set RG1 = WS.Range("A" & X_Cli, "C" & X_Cli)
        RG1.Font.Name = "Arial"
        RG1.Font.Size = 8
        RG1.Font.Color = &H800000
        RG1.Merge
        RG1.Value = "Tel./Fax: 091.453082 - Cell. 389 5504989"
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75
        
        X = X + 1
        X_Cli = X_Cli + 1
        
        '3 Riga
        Set RG1 = WS.Range("A" & X_Cli, "D" & X_Cli)
        RG1.Font.Name = "Arial"
        RG1.Font.Size = 8
        RG1.Font.Color = &H800000
        RG1.Merge
        RG1.Value = "P.Iva: 05170710825 - C.F.: LRSGNN60H13G273H"
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75
        
        X = X + 1
        X_Cli = X_Cli + 1
        
        '4 Riga
        Set RG1 = WS.Range("A" & X_Cli, "D" & X_Cli)
        RG1.Font.Name = "Arial"
        RG1.Font.Size = 8
        RG1.Font.Color = &H800000
        RG1.Merge
        RG1.Value = "Mail: info@clic-art.it | Web: www.clic-art.it"
        WS.StandardWidth = 8
        WS.Cells.RowHeight = 12.75