You are here:Home-Domande su Excel VBA e MACRO-Errore di Run-time 438
Errore di Run-time 4382020-05-16T10:59:02+02:00

Home Forum Domande su Excel VBA e MACRO Errore di Run-time 438

Visualizzazione 22 filoni di risposte
  • Autore
    Post
    • antinoantino
      Partecipante
        Post totali: 39

        Buongiorno a tutti gli amici del forum

        In questi giorni ho installato Office 2019 e su un programma relativo alla fatturazione che gira magnificamente con Office 2007 mi scaturiscono degli errori alcuni dei quali sono riuscito a sistemare modificando le “Opzioni” di Excel.

        Questo, invece, non riesco a sistemarlo.

        L’errore, come si può notare dall’immagine che allego, è il seguente:

        Errore di run-time 438. Proprietà o metodo non supportati dall’oggetto

        Con il debug sulla riga di vba che invio.

        Grazie dell’aiuto che vorrete darmi.

         

      • sidsid
        Moderatore
          Post totali: 750

          Ciao e bentornato

          Se il problema lo riscontri con la versione 2019, c’è qualche incompatibilità con la vesione che usavi in precedenza. Io purtroppo sto fermo alla versione 2013, quindi non saprei dove mettere le mani.
          Mi spiace

        • antinoantino
          Partecipante
            Post totali: 39

            Scusami Sid,

            Lo strano è che su un altro PC dove ho lo stesso Excel 2019 il programma funziona regolarmente.

            Ho notato anche che nei “Riferimenti di Excel”, come potrai notare dall’immagine che ti allego, risulta che il VBA Project non è salvato. Cosa significa?

            Grazie della risposta

             

          • BySalvBySalv
            Amministratore del forum
              Post totali: 759

              Ciao Antino, probabile che non hai attivato “Euro currency tools”, se non ti serve la conversione dell’Euro togli la spunta alla voce tranquillamente , altrimenti dovrai attivarlo.

              vai in opzioni-Componenti aggiuntivi nella cella in basso finestra grande Gestisci:- componenti aggiuntivi Excel premi ok ti compare la mascherina

              [/url]

              metti la spunta ad “Euro currency tools” e salva.

              poi salva il file chiudi e riapri e vedi se lo fa di nuovo.

              Ciao By sal (8-D

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

            • antinoantino
              Partecipante
                Post totali: 39

                Ciao BySalv,

                Non ho problemi per la conversione dell’euro, ma quello che riscontro è  che avendo installato su due pc Office 2019 in uno il programma funziona (In realtà come puoi vedere dall’immagine allegata, ho dovuto soltanto eliminare il comando ‘ Apply perché funzioni regolarmente), mentre nell’altro PC mi da l’errore che ho descritto.

                Per quanto riguarda la conversione dell’euro forse non hai notato bene che io dicevo che risulta il vba project non è salvato.

                Forse esiste qualche pack di conversione (Il programma è stato creato con Office 2007)

                Fammi sapere

              • BySalvBySalv
                Amministratore del forum
                  Post totali: 759

                  Ciao I due pc sono uguali? anche come byte 32 o 64, inoltre togliendo “Apply” non credo faccia l’ordinamento.

                  ancora una cosa sui pc causa caricamento programmi diversi si installano patch diverse che comportano questo strano comportamento di funzionamento “SI-NO”.

                  hai provato a reinstallare office?, infatti mi sembra strano il comportamento tra i due PC, sia andato qualcosa di storto nell’installazione.

                  Office2019 ha tutti le pack di conversione di altre versioni, quindi non credo sia questo il problema.

                  comunque hai tolto la spunta nei tuoi riferimenti a “Miscrosoft euro conversion….”, prova a toglierla chiudi e riapri e vedi cosa succede.

                  se poi come dici non ti salva il VBA sei sicuro di salvarlo come “Xlsm”? con l’attivazione delle macro, se lo salvi come “Xlsx” non salva il VBA.

                  Ciao By Sal (8-D

                   

                  Ciao By Sal (8-)
                  se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                • antinoantino
                  Partecipante
                    Post totali: 39

                    Ciao By Sal,

                    Questa è l’intera macro utilizzata (Sub RegiostraAvvisoParcella)
                    questa è la macro utilizzata:

                    Sub RegistraAvvisoParcella()

                    ‘===========================================================
                    ‘BISOGNA ATTIVARE LA LIBRERIA
                    ‘”Microsoft Visual Basic For Applications Extensibility 5.3″
                    ‘===========================================================

                    Application.ScreenUpdating = False
                    Dim ws1 As Worksheet
                    Dim ws2 As Worksheet
                    Dim wb As Workbook
                    Dim VbComp As VBIDE.VBComponent
                    Dim NOMEFILE As String
                    Dim UserName As String
                    Dim ANNO As Integer
                    Dim Percorso As String
                    Dim cartella
                    Dim sovrascrivo As VbMsgBoxResult
                    Dim iRow As Integer
                    Dim foglio As String
                    Dim NOMEFILE1 As String
                    ANNO = Year(Date)

                    ‘ On Error GoTo uscita
                    Set ws1 = ThisWorkbook.Sheets(“INS. AVV. PARCELLA”)
                    Set ws2 = ThisWorkbook.Sheets(“Avvisi Parcella”)

                    Percorso = “L:\FATTURAZIONE\” & ANNO & “\AVVISI PARCELLA\”
                    cartella = Dir(Percorso, vbDirectory)

                    ‘ STAMPO IL FOGLIO
                    ExecuteExcel4Macro “PRINT(2,1,1,2,,,,,,,,2,,,TRUE,,FALSE)”

                    ‘COPIO IL FOGLIO IN UN NUOVO FILE
                    ws1.Unprotect
                    ws1.Copy

                    ‘ELIMINO TUTTE LE MACRO CON ANNESSI MODULI, FORM E MODULI DI CLASSE
                    For Each VbComp In ActiveWorkbook.VBAProject.VBAComponents
                    Select Case VbComp.Type
                    Case 1 To 3
                    ActiveWorkbook.VBProject.VBComponents.Remove VbComp
                    Case Else
                    With VbComp.CodeModule
                    .DeleteLines 1, .CountOfLines
                    End With
                    End Select
                    Next VbComp

                    ‘FORMATTO IL FOGLIO SOLO CON I VALORI
                    Set wb = ActiveWorkbook
                    With wb.Sheets(“1”)
                    .Columns(“I:N”).Delete
                    .Range(“A1:H44”).Copy
                    .Range(“A1”).PasteSpecial Paste:=xlPasteValues
                    Application.CutCopyMode = False
                    .Range(“A1”).Select
                    .Name = “Avviso Parcella”
                    UserName = .Range(“C18”).Value
                    .PageSetup.PrintArea = “A1:H44”
                    End With

                    NOMEFILE = “Avviso di Parcella n. ” & UserName & “.xls”
                    NOMEFILE1 = “Avviso di Parcella n. ” & UserName & “.pdf”

                    ‘VERIFICO CHE NELLA DIRECTORY DI SALVATGGIO NON ESISTA
                    ‘UN FILE CON LO STESSO NOME DI QUELLO CHE SALVERò
                    Do While cartella <> “”
                    If cartella <> “.” And cartella <> “..” Then
                    If NOMEFILE = cartella Then
                    sovrascrivo = MsgBox(“Esiste già un file con lo stesso nome; ” & _
                    “sovrascriverlo?”, vbYesNo + vbExclamation, “ATTENZIONE”)
                    If sovrascrivo = vbNo Then
                    MsgBox “Il file corrente verrà chiuso senza essere salvato” _
                    , vbInformation, “CHIUSURA FILE”
                    Application.DisplayAlerts = False
                    wb.Close
                    Application.DisplayAlerts = True
                    Exit Sub
                    End If
                    Exit Do
                    End If
                    End If
                    cartella = Dir
                    Loop

                    ‘SALVO IL FILE E LO CHIUDO
                    Application.DisplayAlerts = False
                    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Percorso & NOMEFILE1
                    wb.SaveAs Filename:=Percorso & NOMEFILE, FileFormat:=xlExcel8
                    Application.DisplayAlerts = True
                    wb.Close
                    MsgBox “File salvato con successo”, vbInformation _
                    , “SALVATAGGIO FILE”
                    Set wb = Nothing
                    foglio = ws1.Range(“N1”)

                    ‘APRO IL FILE “Schede Clienti.xlsm” E CI COPIO I DATI
                    ‘DEL FOGLIO “INS. AVV. PARCELLA”; LO SALVO E LO CHIUDO
                    Set wb = Workbooks.Open(“L:\FATTURAZIONE\Schede Clienti.xlsm”)
                    With wb.Worksheets(foglio)
                    iRow = 3
                    While .Cells(iRow, 2).Value <> “”
                    iRow = iRow + 1
                    Wend
                    ws1.Range(“C18”).Copy
                    .Cells(iRow, 1).PasteSpecial Paste:=xlPasteValues
                    ws1.Range(“G18”).Copy
                    .Cells(iRow, 2).PasteSpecial Paste:=xlPasteValues
                    ws1.Range(“A22”).Copy
                    .Cells(iRow, 3).PasteSpecial Paste:=xlPasteValues
                    ws1.Range(“H39”).Copy
                    .Cells(iRow, 4).PasteSpecial Paste:=xlPasteValues
                    ‘ .Range(“A1”).Activate
                    wb.Save
                    wb.Close
                    End With
                    Set wb = Nothing

                    MsgBox “Registrato scheda cliente con successo”, vbInformation

                    iRow = 2
                    While ws2.Cells(iRow, 2).Value <> “”
                    iRow = iRow + 1
                    Wend

                    ‘COPIO I DATI DAL FOGLIO “INS. AVV. PARCELLA” AL FOGLIO “Avvisi Parcella”
                    ws2.Cells(iRow, 1).Value = ws1.Cells(18, 3).Value ‘Numero Avviso Parcella
                    ws2.Cells(iRow, 2).Value = ws1.Cells(18, 7).Value ‘Data Avviso Parcella
                    ws2.Cells(iRow, 3).Value = ws1.Cells(12, 7).Value ‘Nominativo Cliente
                    ws2.Cells(iRow, 4).Value = ws1.Cells(39, 8).Value ‘Importo Totale A. Parcella

                    ‘ORDINI I DATI COPIATI
                    ws2.Sort.SortFields.Clear
                    ws2.Sort.SortFields.Add Key:=ws2.Range(“A2:A501”), _
                    SortOn:=xlSortOnValues, _
                    Order:=xlAscending, _
                    DataOption:=xlSortNormal
                    With ws1.Sort
                    .SetRange ws2.Range(“A2:D501”)
                    .Header = xlGuess
                    .MatchCase = False
                    .Orientation = xlTopToBottom
                    .SortMethod = xlPinYin
                    .Apply
                    End With
                    Sheets(“INS. AVV. PARCELLA”).Protect
                    Sheets(“MENU PRINCIPALE”).Select
                    MsgBox “Copia dei dati effettuata con successo”, vbInformation

                    ‘ INVIO L’AVVISO DI PARCELLA EMESSO CON ESTENZIONE PDF TRAMITE E-MAIL ALL’INDIRIZZO DEL CLIENTE
                    Dim Msg, Style, Title, Response, MyString
                    Msg = “Ora sarà possibile, con uma e-mail, inviare il file generato! Continuare?” ‘ Definisce il messaggio.
                    Style = vbYesNo + vbInformation + vbDefaultButton2 ‘ Definisce i pulsanti.
                    Title = “Avviso di Parcella” ‘ Definisce il titolo.
                    Response = MsgBox(Msg, Style, Title)
                    If Response = vbYes Then

                    Dim Indirizzo As String
                    Dim IndirizzoCc As String
                    Dim IndirizzoBcc As String
                    Dim oggetto As String
                    Dim testo As String

                    Indirizzo = ws1.Range(“O1”) ‘<——qui ci scrivi l’indirizzo oppure la cella excel oppure il controllo (combobox, textbox, ecc) di ‘riferimento.
                    IndirizzoCc = ws1.Range(“O2”)
                    IndirizzoBcc = ws1.Range(“O3”)
                    oggetto = “Invio Avviso di Parcella” ‘Me.TextBox1
                    testo = “Si allega alla presente l’Avviso di Parcella emesso” ‘Me.TextBox2
                    ‘If Me.ComboBox1 = “” Or Me.TextBox1 = “” Or Me.TextBox2 = “” Then
                    ‘MsgBox “Devi riempire tutti i campi”, vbExclamation
                    ‘Else

                    Dim OutApp As Object
                    Dim OutMail As Object
                    Dim bodymail As String

                    Set OutApp = CreateObject(“Outlook.Application”)
                    OutApp.Session.Logon
                    Set OutMail = OutApp.CreateItem(0)

                    With OutMail
                    ‘.From = “” ‘tuo indirizzo mail”
                    .To = Indirizzo
                    .CC = IndirizzoCc
                    .BCC = IndirizzoBcc
                    .Subject = oggetto
                    .bodyformat = olFormatHTML
                    bodymail = “<html><head></head><body>”
                    .HTMLBody = bodymail + testo
                    .Attachments.Add Percorso + NOMEFILE1
                    .Display
                    ‘.Send ‘ Per inviare direttamente la mail al posto di .display

                    End With
                    Set OutMail = Nothing
                    Set OutApp = Nothing
                    MsgBox “mail inviata !”

                    End If

                    ‘SOLITA GESTIONE DELL’ERRORE
                    ‘ uscita:
                    ‘ If Err.Number <> 0 Then
                    ‘ MsgBox Err.Description
                    ‘ End If

                    Set ws1 = Nothing
                    Set ws2 = Nothing
                    Application.ScreenUpdating = True
                    End Sub

                    La cosa strana che quest’altra macro (per alcuni passaggi identica) non mi da alcun problema:

                    Sub RegistraParcella()
                    
                    '===========================================================
                    'BISOGNA ATTIVARE LA LIBRERIA
                    '"Microsoft Visual Basic For Applications Extensibility 5.3"
                    '===========================================================
                    
                    Application.ScreenUpdating = False
                    Dim ws1 As Worksheet
                    Dim ws2 As Worksheet
                    Dim wb As Workbook
                    Dim VbComp As VBIDE.VBComponent
                    Dim NOMEFILE As String
                    Dim UserName As String
                    Dim ANNO As Integer
                    Dim Percorso As String
                    Dim cartella
                    Dim sovrascrivo As VbMsgBoxResult
                    Dim iRow As Integer
                    Dim foglio As String
                    Dim NOMEFILE1 As String
                    
                    ' On Error GoTo uscita
                    Set ws1 = ThisWorkbook.Sheets("INS. PARCELLA")
                    Set ws2 = ThisWorkbook.Sheets("Parcelle")
                    ANNO = Year(Date)
                    Percorso = "C:\FATTURAZIONE\" & ANNO & "\PARCELLE\"
                    cartella = Dir(Percorso, vbDirectory)
                    
                    'STAMPO IL FOGLIO
                    ExecuteExcel4Macro "PRINT(2,1,1,2,,,,,,,,2,,,TRUE,,FALSE)"
                    
                    'COPIO IL FOGLIO IN UN NUOVO FILE
                    ws1.Unprotect
                    ws1.Copy
                    
                    'ELIMINO TUTTE LE MACRO CON ANNESSI MODULI, FORM E MODULI DI CLASSE
                    For Each VbComp In ActiveWorkbook.VBProject.VBComponents
                       Select Case VbComp.Type
                          Case 1 To 3
                             ActiveWorkbook.VBProject.VBComponents.Remove VbComp
                          Case Else
                             With VbComp.CodeModule
                                .DeleteLines 1, .CountOfLines
                             End With
                       End Select
                    Next VbComp
                    
                    'FORMATTO IL FOGLIO SOLO CON I VALORI
                    Set wb = ActiveWorkbook
                    With wb.Sheets(1)
                       .Columns("I:N").Delete
                       .Range("A1:H44").Copy
                       .Range("A1").PasteSpecial Paste:=xlPasteValues
                       Application.CutCopyMode = False
                       .Range("A1").Select
                       .Name = "Parcella"
                        UserName = .Range("C18").Value
                        .PageSetup.PrintArea = "A1:H44"
                    End With
                    
                    NOMEFILE = "Parcella n. " & UserName & ".xls"
                    NOMEFILE1 = "Parcella n. " & UserName & ".pdf"
                    
                    'VERIFICO CHE NELLA DIRECTORY DI SALVATGGIO NON ESISTA
                    'UN FILE CON LO STESSO NOME DI QUELLO CHE SALVER?
                    Do While cartella <> ""
                        If cartella <> "." And cartella <> ".." Then
                             If NOMEFILE = cartella Then
                                sovrascrivo = MsgBox("Esiste gi? un file con lo stesso nome; " & _
                                "sovrascriverlo?", vbYesNo + vbExclamation, "ATTENZIONE")
                                If sovrascrivo = vbNo Then
                                    MsgBox "Il file corrente verr? chiuso senza essere salvato" _
                                    , vbInformation, "CHIUSURA FILE"
                                    Application.DisplayAlerts = False
                                    wb.Close
                                    Application.DisplayAlerts = True
                                    Exit Sub
                                End If
                                Exit Do
                             End If
                        End If
                       cartella = Dir
                    Loop
                        
                    'SALVO IL FILE E LO CHIUDO
                    Application.DisplayAlerts = False
                    ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Percorso & NOMEFILE1
                    wb.SaveAs Filename:=Percorso & NOMEFILE, FileFormat:=xlExcel8
                    Application.DisplayAlerts = True
                    wb.Close
                    MsgBox "File salvato con successo", vbInformation _
                    , "SALVATAGGIO FILE"
                    Set wb = Nothing
                    foglio = ws1.Range("N1")
                    
                    'APRO IL FILE "Schede Clienti.xlsm" E CI COPIO I DATI
                    'DEL FOGLIO "INS. PARCELLA"; LO SALVO E LO CHIUDO
                    Set wb = Workbooks.Open("C:\FATTURAZIONE\Schede Clienti.xlsm")
                    With wb.Worksheets(foglio)
                        iRow = 3
                        While .Cells(iRow, 6).Value <> ""
                            iRow = iRow + 1
                        Wend
                        ws1.Range("C18").Copy
                        .Cells(iRow, 5).PasteSpecial Paste:=xlPasteValues
                        ws1.Range("G18").Copy
                        .Cells(iRow, 6).PasteSpecial Paste:=xlPasteValues
                        ws1.Range("H39").Copy
                        .Cells(iRow, 7).PasteSpecial Paste:=xlPasteValues
                        ' .Range("A1").Activate
                        wb.Save
                        wb.Close
                    End With
                    Set wb = Nothing
                    
                    MsgBox "Registrato scheda cliente con successo", vbInformation
                          
                    iRow = 2
                    While ws2.Cells(iRow, 2).Value <> ""
                        iRow = iRow + 1
                    Wend
                    
                    'COPIO I DATI DAL FOGLIO "INS. PARCELLA" AL FOGLIO "Parcelle"
                    ws2.Cells(iRow, 1).Value = ws1.Cells(18, 3).Value 'Numero Parcella
                    ws2.Cells(iRow, 2).Value = ws1.Cells(18, 7).Value 'Data Parcella
                    ws2.Cells(iRow, 3).Value = ws1.Cells(12, 7).Value 'Nominativo Cliente
                    ws2.Cells(iRow, 4).Value = ws1.Cells(39, 8).Value 'Importo Totale Parcella
                    ws2.Cells(iRow, 5).Value = ws1.Cells(39, 6).Value 'Importo Rittenuta d'Acconto
                        
                    'ORDINI I DATI COPIATI
                    ws2.Sort.SortFields.Clear
                    ws2.Sort.SortFields.Add Key:=ws2.Range("A2:A501"), _
                    SortOn:=xlSortOnValues, _
                    Order:=xlAscending, _
                    DataOption:=xlSortNormal
                    With ws1.Sort
                        .SetRange ws2.Range("A2:D501")
                        .Header = xlGuess
                        .MatchCase = False
                        .Orientation = xlTopToBottom
                        .SortMethod = xlPinYin
                        .Apply
                        End With
                    ws1.Protect
                    
                    'IMPLEMENTO CODICE COLORAZIONE RIGA
                    Dim area As Range
                    Dim cella As Range
                    Dim Navviso As Variant
                    Dim ws3 As Worksheet
                    Set ws3 = ThisWorkbook.Sheets("Avvisi Parcella")
                    Navviso = ws1.Cells(2, 12).Value
                    
                    Set area = ws3.Range("A:A")
                    Set cella = area.Find(Navviso, , xlValues)
                    If Not cella Is Nothing Then
                        ws3.Range("A" & cella.Row, "D" & cella.Row).Interior.ColorIndex = 6
                    End If
                    
                    Sheets("MENU PRINCIPALE").Select
                    MsgBox "Copia dei dati effettuata con successo", vbInformation
                    
                    ' INVIO LA PARCELLA EMESSA CON ESTENZIONE PDF TRAMITE E-MAIL ALL'INDIRIZZO DEL CLIENTE
                    Dim Msg, Style, Title, Response, MyString
                    Msg = "Ora sar? possibile, con uma e-mail, inviare il file generato! Continuare?"  ' Definisce il messaggio.
                    Style = vbYesNo + vbInformation + vbDefaultButton2    ' Definisce i pulsanti.
                    Title = "Avviso"    ' Definisce il titolo.
                    Response = MsgBox(Msg, Style, Title)
                    If Response = vbYes Then
                    
                    Dim Indirizzo As String
                    Dim IndirizzoCc As String
                    Dim IndirizzoBcc As String
                    Dim oggetto As String
                    Dim testo As String
                    
                    Indirizzo = ws1.Range("O1")   '<------qui ci scrivi l'indirizzo oppure la cella excel oppure il controllo (combobox, textbox, ecc) di  'riferimento.
                    IndirizzoCc = ws1.Range("O2")
                    IndirizzoBcc = ws1.Range("O3")
                    oggetto = "Invio Parcella"  'Me.TextBox1
                    testo = "Si allega alla presente fattura emessa" 'Me.TextBox2
                    'If Me.ComboBox1 = "" Or Me.TextBox1 = "" Or Me.TextBox2 = "" Then
                    'MsgBox "Devi riempire tutti i campi", vbExclamation
                    'Else
                    
                    Dim OutApp As Object
                    Dim OutMail As Object
                    Dim bodymail As String
                    
                            Set OutApp = CreateObject("Outlook.Application")
                            OutApp.Session.Logon
                            Set OutMail = OutApp.CreateItem(0)
                        
                            With OutMail
                                '.From = "" 'tuo indirizzo mail"
                                .To = Indirizzo
                                .CC = IndirizzoCc
                                .BCC = IndirizzoBcc
                                .Subject = oggetto
                                .bodyformat = olFormatHTML
                                bodymail = "<html><head></head><body>"
                                .HTMLBody = bodymail + testo
                                .Attachments.Add Percorso + NOMEFILE1
                                .Display
                                '.Send  ' Per inviare direttamente la mail al posto di .display
                                
                             End With
                        Set OutMail = Nothing
                    Set OutApp = Nothing
                    MsgBox "mail inviata !"
                    End If
                    
                    'SOLITA GESTIONE DELL'ERRORE
                    ' uscita:
                    ' If Err.Number <> 0 Then
                    '    MsgBox Err.Description
                    ' End If
                    
                    Set ws1 = Nothing
                    Set ws2 = Nothing
                    Set area = Nothing
                    Set cella = Nothing
                    Set ws3 = Nothing
                    
                    Application.ScreenUpdating = True
                    End Sub
                    
                    

                    Grazie dell’aiuto

                    `

                  • sidsid
                    Moderatore
                      Post totali: 750

                      Ho notato anche che nei “Riferimenti di Excel”, come potrai notare dall’immagine che ti allego, risulta che il VBA Project non è salvato. Cosa significa?

                      Non si riferisce al file dove risiedono le macro, ma a un altro file che in quel momento è aperto, ma che non hai ancora salvato (sia che abbia macro, sia che non le abbia)

                    • sidsid
                      Moderatore
                        Post totali: 750

                        Non si riferisce al file dove risiedono le macro, ma a un altro file che in quel momento è aperto, ma che non hai ancora salvato (sia che abbia macro, sia che non le abbia)

                        In parole povere, nella finestra dei riferimenti del file principale, non puoi vedere il riferimento a se stesso, ma solo quelli di altri file.
                        Spero sia chiaro.

                      • antinoantino
                        Partecipante
                          Post totali: 39

                          Ciao Sid,
                          Grazie della risposta.
                          Allora, secondo te, devo modificare la macro?
                          Ed eventualmente come?

                          E perché nell’altra macro con le stesse istruzioni non da debug?

                          Grazie

                        • sidsid
                          Moderatore
                            Post totali: 750

                            secondo me il problema del progetto non salvato, non c’entra nulla con l’errore che ti viene restituito

                          • antinoantino
                            Partecipante
                              Post totali: 39

                              Sono d’accordissimo con te.
                              Se tu dai uno sguardo alle due macro che ho inviato (all’epoca le hai scritte tu) mentre nella prima mi da errore, nella seconda la svolge completamente, senza errori di sorta e le istruzioni sono identiche.
                              Il progetto non salvato si riferisce al file che in quel momento è stato creato e che, all’atto del blocco, non risulta ancora salvato.
                              Ti volevo chiedere se fosse possibile riformulare quella parte di macro, così vediamo se l’errore ancora persiste.
                              Grazie

                            • sidsid
                              Moderatore
                                Post totali: 750

                                L’ideale sarebbe testare il file; depuralo dei dati sensibili e poi lo metti a disposizione.

                              • antinoantino
                                Partecipante
                                  Post totali: 39

                                  Ciao Sid,
                                  Ho depurato il file e te lo invio.
                                  Non so cosa è successo perché mi da un errore nella registrazione dell’avviso di Parcella nella “Scheda Cliente”.
                                  Attendo tue “buone notizie”
                                  Grazie

                                  https://www.dropbox.com/sh/6wu9s3zxhwlbgc2/AACEKghlFVs3D20mA1txWBHna?dl=0

                                • sidsid
                                  Moderatore
                                    Post totali: 750

                                    Devi essere più preciso

                                    1 – apro il file
                                    2 – foglio MENU PRINCIPALE
                                    3 – clicco su “Schede clienti”
                                    4 – continua tu in modo dettagliato, finche non arrivi all’errore che riscontri

                                  • antinoantino
                                    Partecipante
                                      Post totali: 39

                                      Ciao Sid,
                                      hai perfettamente ragione.
                                      Ecco i passaggi:
                                      1 – Apro il file
                                      2 – Dal foglio “MENU PRINCIPALE” scelgo “INS. AVV. PARCELLA”
                                      3 – Nella cella G12 scelgo dal menù a tendina il cliente
                                      4 – compilo il documento
                                      5 – Scelgo “Registra, stampa, salva Avv. Parcella”
                                      La macro che utilizza è RegistraAvvisoParcella e il modulo iRow
                                      6 – A questo punto dà l’errore di Run-time 438 “Proprietà o metodo non supportati dall’oggetto” e le istruzioni si bloccano qui.

                                      Ti volevo inoltre far notare che, se invece di dover compilare un avviso di parcella dovessi compilare una “Parcella” con questi passaggi:
                                      1 – dal foglio “MENU PRINCIPALE” scelgo “INS: PARCELLA”
                                      2 – In alto a destra scelgo il numero dell’Avviso e l’anno di emissione
                                      3 – Richiamo l’avviso di parcella con “Richiama Avviso di Parcella”
                                      4 – Clicco su “Registra, stampa, salva Parcella”
                                      la macro che utilizza è Registra Parcella e il modulo 14
                                      non da alcun errore.
                                      Come potrai vedere le macro utilizzate per le due operazioni sono identiche.
                                      Questo non riesco a capire.
                                      Grazie dell’aiuto.

                                    • sidsid
                                      Moderatore
                                        Post totali: 750

                                        Ciao.
                                        Anche a me da errore alla stessa istruzione, ma il messaggio che mi restituisce è diverso. Vedi immagine sottostante

                                        Ho risolto andando in
                                        – File
                                        – opzioni
                                        – centro protezione
                                        – impostazioni centro protezione
                                        – impostazioni macro
                                        – spunta il checkbox “Considera attendibile l’accesso al modello a oggetti dei progetti VBA”
                                        – OK
                                        – OK

                                        Funziona senza problemi entrambe le macro

                                        • Questa risposta è stata modificata 2 mesi, 2 settimane fa da sidsid.
                                      • antinoantino
                                        Partecipante
                                          Post totali: 39

                                          Ciao Sid,
                                          Innanzitutto ti ringrazio del tuo impegno.
                                          Quello che tu mi suggerisci io l’avevo già fatto. Infatti all’inizio anche a me mi dava il tuo stesso errore, però una volta che ho sistemato le “opzioni” di Excel mi è passato all’errore attuale. Soltanto però per l’Avviso di Parcella, mentre per l’emissione della Parcella il programma funziona regolarmente.
                                          Ho altresì provato su un altro Pc dove ancora è installato “Office 2007”, ma anche qui mi da lo stesso errore. Cosa che non ha mai fatto.
                                          Ti volevo chiedere se magari fosse possibile riformulare quella parte di programma che da questo tipo di problemi, oppure cosa pensi.
                                          Grazie nuovamente del tuo interessamento.

                                        • sidsid
                                          Moderatore
                                            Post totali: 750

                                            Ti volevo chiedere se magari fosse possibile riformulare quella parte di programma che da questo tipo di problemi,

                                            Non è un problema di codice, anche perché quella è una macro universale che usano tutti per eliminare il VBA dal file

                                            Credo che il problema risiedea nella tua applicazione. Come ha detto BySalv, sarebbe il caso di reinstallare il pacchetto Office.

                                          • antinoantino
                                            Partecipante
                                              Post totali: 39

                                              Sicuramente adesso provo a reinstallare Office.
                                              Però non riesco assolutamente a capire perché le stesse istruzioni inserite in altra macro funzionano regolarmente.
                                              Comunque ti faccio sapere.
                                              Saluti

                                            • sidsid
                                              Moderatore
                                                Post totali: 750

                                                A me spuntando quell’opzione funziona.

                                              • antinoantino
                                                Partecipante
                                                  Post totali: 39

                                                  Ciao Sid e BySal,
                                                  Dopo tanto sono riuscito a capire quale fossero gli errori che non mi mandavano in debug la macro “Insavvisoparcella”
                                                  Innanzi tutto anziché VBProject.VBComponents avevo scritto VBAProject.VBAComponents e poi qualche rigo sotto With sb.sheets(“1”) modificato senza “virgolette”.
                                                  Quello che non riesco a capire, però, è perché con Escel 2007 mi funzionava regolarmente.
                                                  Grazie di tutto.
                                                  A presto
                                                  Non so come chiudere il topic

                                                • BySalvBySalv
                                                  Amministratore del forum
                                                    Post totali: 759

                                                    Bene gli errori di battitura sono i più difficili da trovare, perche uno è sicuro di aver scritto bene.
                                                    per evitarne la maggior parte basta inserire all’inizio del Modulo

                                                    “Option explicit”

                                                    che obbliga a dichiarare le variabili e nello stesso momento controlla gli errori di battitura, te li evidenzia.

                                                    Ciao By Sal (8-D

                                                    Ciao By Sal (8-)
                                                    se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

                                                Visualizzazione 22 filoni di risposte
                                                • Devi essere connesso per rispondere a questo topic.