Compilazione Word da Access da VBA - inserimento immagini con errore

di Carlus il
15 risposte

Ciao a tutti, 

ho un piccolo problema e spero che qualcuno mi possa aiutare.

Ho creato una sub tramite VBA in una maschera che su click apre e compila un documento word esistente tramite la sostituzione dei Bookmark presenti nello stesso word.

Tra le sostituzioni sono presenti anche delle immagini (firme) che variano in base a una selezione su casella combinata.

Lanciato il comando inizia la compilazione correttamente ma si blocca (non sempre ma una volta su tre) sull'inserimento delle immagini (firme) con questo messaggio di errore: “Error di Run Time 462 il percorso non è stato trovato”

l'istruzione che uso è Selection.InlineShapes.AddPicture

Di seguito una parte del codice della Sub

Premetto che sono alle prime armi con VBA 

Grazie in anticipo

Public Function percorsoimmagini() As String
percorsoimmagini = "c:...\FileDatabase\Immagini\"
End Function

Dim FirmaRL As String
Dim idfirmaRL As String
idfirmaRL = Txt_RL_ID
FirmaRL = percorsoimmagini & idfirmaRL & ".png"
Wrd.ActiveDocument.Bookmarks("FirmaRL1").Select
Selection.Find.ClearFormatting
With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.InlineShapes.AddPicture FileName:=FirmaRL, LinkToFile:=False, SaveWithDocument:=True
    

15 Risposte

  • Quando il programma si ferma controllail contenuto della variabile FirmaRL soprattutto controlla se ci sono spazi

  • Grazie per la risposta, ma nessuno spazio purtroppo. La cosa che non capisco è percé  si ferma una volta su tre.

  • Ma hai controllato copiando e incollando il percorso che visualizzi se arrivi al file in questione o no?

    Puoi incollare qui il contenuto della variabile quando hai l'errore?

    Se ti dice che il percorso non è stato trovato mi sembra che sevi indagare su quello

  • Banalmente fai una verifica della presenza del File con DIR, che poi corrsponde anche ad una verifica di corrispondenza come diceva Oregon:

    FirmaRL = percorsoimmagini & idfirmaRL & ".png"
    If Len(DIR(FirmaRL))>0 Then
    	MsgBox "FILE OK"
    	' Prosegui con tutto
    Else
    	Msgbox "FILE NOT EXIST"
    	' da capire perchè...
    End If
  • 17/10/2023 - @Alex ha scritto:


    Banalmente fai una verifica della presenza del File con DIR, che poi corrsponde anche ad una verifica di corrispondenza come diceva Oregon:

    FirmaRL = percorsoimmagini & idfirmaRL & ".png"
    If Len(DIR(FirmaRL))>0 Then
    	MsgBox "FILE OK"
    	' Prosegui con tutto
    Else
    	Msgbox "FILE NOT EXIST"
    	' da capire perchè...
    End If

    Grazie Intanto ho aggiunto la verifica… ma ho effettuato diverse prove ed il problema non si è ripresentato…

  • 16/10/2023 - oregon ha scritto:


    Ma hai controllato copiando e incollando il percorso che visualizzi se arrivi al file in questione o no?

    Puoi incollare qui il contenuto della variabile quando hai l'errore?

    Se ti dice che il percorso non è stato trovato mi sembra che sevi indagare su quello

    Sto rilanciando il comando in attesa che si verifichi di nuovo il problema

  • 16/10/2023 - Carlus ha scritto:


    messaggio di errore: “Error di Run Time 462 il percorso non è stato trovato”

    Mi aggiungo alla lista di chi chiede di verificare il percorso, visto il messaggio d'errore mi sembra ovvio.

    Ultimamente va di moda usare OneDrive. E' questa la tua situazione? 

    La frequenza una volta su tre è approssimativa (a titolo d'esempio) o è proprio così, costante nel tempo?

  • Ciao a tutti,

    il contenuto della variabile è giudto, l'ho testo ed è il seguente:

      : FirmaRL : "\\192.xxx.x.xxx\FileDatabase\Immagini\4.png" : String

    la questione è che il messaggio di errore che appare è diventato questo: Error di Run Time '462 ' Il computer server remoto non esiste o non è disponibile.

    Infatti ho fatto anche la verifica della presenza del File con DIR e risultano positive ma dopo si pianta comunque…

    Potrebbe essere che rimane qualche istanza aperta che mi blocca l'accesso al server?

  • Ogni proprietà/metodo deve fare riferimento all'oggetto server (server OLE COM) anche Selection che deve fare riferimento sempre a Wrd

  • 20/10/2023 - oregon ha scritto:


    Ogni proprietà/metodo deve fare riferimento all'oggetto server (server OLE COM) anche Selection che deve fare riferimento sempre a Wrd

    Scusa l'ignoranza ma come anticipavo sono alle prime armi… come dovrei modificare il codice?

    Wrd.Selection.InlineShapes.AddPicture ?

  • Nel forum non su fornisce codice pronto ma suggerimenti. Il codice devi scriverlo tu.

    Comunque, come hai creato l'oggetto Wrd ?

  • 20/10/2023 - oregon ha scritto:


    Nel forum non su fornisce codice pronto ma suggerimenti. Il codice devi scriverlo tu.

    Comunque, come hai creato l'oggetto Wrd ?

    Dim Wrd As Word.Application
    Set Wrd = CreateObject("Word.Application")
    
  • Quindi usa 

    Wrd.

    prima di Selection

  • Ciao, 

    potrebbe essere un problema di accesso al file che si trova su un indirizzo di rete ? 
    Magari non riesce subito a trovare il file con il suo percorso per motivi di lentezza di accesso alle cartelle di rete ? 
    Un pò di latenza ? 

    In tal caso puoi prima testare se il file è raggiungibile, se non lo è intercetti con on error l'errore e attendi un secondo per poi ritentare l'operazione per una o due volte a tua discrezione. 

    In pratica crei un piccolo loop di attesa che ricontrolla l'accesso alle cartelle di rete.
    Se va a buon fine procedi con la parte restante del codice, altrimenti interromi l'operazione con relativo messaggio di errore .

    Una cosa di questo tipo potrebbe magari risolvere, sempre se lo è, un problema di accesso un pò dificoltoso al file.

Devi accedere o registrarti per scrivere nel forum
15 risposte