Codice VBA errato

di il
12 risposte

Codice VBA errato

Salve scrivo perchè ho bisogno di aiuto tempo fa ho inserito un codice in access per trasferire i dati di una maschera in un modello word e ha sempre funzionato correttamente. ora ho la necessità di fare la stessa cosa con un altra maschera e un altro modello per fare ciò ho creato il modello e ho copiato il codice precedente però adesso non funziona più... il database è lo stesso ma mi da errore runtime 5174 impossibile trovare il file, se apro il dubug viene evidenziato in giallo questa frase Set Doc = Wrd.Documents.Add(Modello).
Private Sub stampa_offerta_Click()
il codice che ho messo è il seguente:

Dim Wrd As Word.Application, Doc As Word.Document
Dim Rst As DAO.Recordset
Dim Modello As String, nomefile As String, i As Integer
Dim Record As String, SQL As String
Dim Tbl As String * 1
Dim TotRiga As Currency, totale As Currency
Dim ReplSel As Boolean

'Trova il nome, completo di percorso, del modello word
'("MOD 03.dot" nella stessa cartella del database)
Modello = ("C:\Modelli\MOD 03 .dot")
Modello = Left(Modello, Len(Modello) - Len(Dir(Modello))) & "MOD 03 .dot"

On Error Resume Next 'gestione errori step by step
'cerca un'istanza di Word già aperta
Set Wrd = GetObject(, "Word.Application")
If Err.Number = 429 Then
'se c'è stato un errore è perchè Word non era già aperto:
'aprilo adesso
Set Wrd = CreateObject("Word.Application")
End If

On Error GoTo 0 'ripristina la segnalazione degli errori

'rendi visibile la finestra di Word:
Wrd.Visible = True
'attiva Word e portalo in primo piano:
Wrd.Activate
'abilita l'opzione "Sostituisci la selezione". Se non fosse
'attiva, i campi modulo rimarrebbero all'interno del testo.
ReplSel = Wrd.Options.ReplaceSelection
Wrd.Options.ReplaceSelection = True

'Apri un nuovo documento basato sul modello:
Set Doc = Wrd.Documents.Add(Modello)
'attivalo e portalo in primo piano:
Doc.Activate
pausa

grazie per l'aiuto

12 Risposte

  • Re: Codice VBA errato

    Ma che c'entra Sql Server??
  • Re: Codice VBA errato

    Scusami non sapevo dove scrivere.... Come faccio a spostare il post
  • Re: Codice VBA errato

    Spostato in area Access
  • Re: Codice VBA errato

    giu239 ha scritto:


    ...impossibile trovare il file...
        'Trova il nome, completo di percorso, del modello word
        '("MOD 03.dot" nella stessa cartella del database)
        Modello = ("C:\Modelli\MOD 03 .dot")
        Modello = Left(Modello, Len(Modello) - Len(Dir(Modello))) & "MOD 03 .dot"
    
    cosa dovrebbe risultare da queste due righe di codice? Metti un Debug.Print Modello e guarda cosa c'è nella finestra immediata.
  • Re: Codice VBA errato

    La seconda riga

    Modello = Left ...

    non serve ..., anzi ... se il file non esiste (come penso sia), crea un percorso/nome fasullo ...

    E sicuro che il file abbia uno spazio prima di .dot ?
  • Re: Codice VBA errato

    Salve sì c'è uno spazio prima del nome del file ammesso che gli abbia capito dove intenderei ho provato a fare le correzioni e a togliere anche la la riga dove c'è il letto ma niente mi dà sempre errore runtime eppure il codice è copiato nello stesso database da un altra maschera
  • Re: Codice VBA errato

    giu239 ha scritto:


    Salve sì c'è uno spazio prima del nome del file
    Non prima del nome ma prima di "puntoDot", che cioè il nome del file (senza considerare l'estensione) termini con uno spazio.

    giu239 ha scritto:


    ... eppure il codice è copiato nello stesso database da un altra maschera
    perché, probabilmente, hai copiato senza capire come si usa, tanto che ancora non hai detto a cosa serve quella riga con l'uso del Left e sta tutto lì al 99%. Hai scritto tu il codice di partenza che hai copiato?
    Noi possiamo tirare ad indovinare come va corretto, magari a tentativi ci riusciamo anche ma
    1) senza il tuo aiuto è molto più difficile;
    2) tu non impari e lo scopo del forum va in fumo.

    PS: non arrabbiarti, per piacere, ma cerca di fare attenzione alla "grammatica". Capisco che specie da dispositivi mobili sia difficile scrivere bene ed evitare gli errori dei suggeritori automatici ma leggere "togliere anche la la riga dove c'è il letto" non aiuta a capire che interventi hai fatto.
  • Re: Codice VBA errato

    Ahahah vero ho scritto letto invece di Left. Chiedo scusa. In pratica il primo codice l'ho scritto io un paio di anni fa copiandolo un po' qua è un po' in rete e adattandolo alle mie esigenze il codice funziona benissimo. Io scrivo i miei dati in una maschera di Access e con il tasto esporta i dati vengono trasferiti in un file word basato su un modello . Io ho preso questo codice che funziona e l'ho trasferito in un'altra maschera dello stesso database mettendolo in una routine evento poi nel codice ho cambiato il nome del modello Word che comunque si trova nella stessa cartella degli altri modelli quindi nemmeno il percorso ho dovuto cambiare. Quando clicco sul pulsante per far avviare la routine evento sì apre Word ma poi appare un errore di runtime se apro il debug vedo evidenziato in giallo questa riga set doc=Word.documents.add(modello)
    Io non riesco a capire dove può essere l'errore perché lo stesso codice su una maschera funziona e sull'altra no
  • Re: Codice VBA errato

    Devi controllare bene il nome del file del modello perché qualcosa non va
  • Re: Codice VBA errato

    Se il modello è nella stessa cartella del database basta che sostituisci le due righe
    
    Modello = ("C:\Modelli\MOD 03 .dot")
    Modello = Left(Modello, Len(Modello) - Len(Dir(Modello))) & "MOD 03 .dot"
    
    con
    
    Modello = CurrentProject.Path & "\MOD 03 .dot"
    
    sempre che il nome del modello non sia sbagliato.
  • Re: Codice VBA errato

    Il nome del modello è giusto l ho controllato più volte.... Non riesco a capire cosa non gli piace l non capisco perché evidenzia in giallo la frase set doc=Word.documents.add(modello)
  • Re: Codice VBA errato

    giu239 ha scritto:


    Il nome del modello è giusto l ho controllato più volte.
    Scusa ma... rinominare il modello usando il "buon senso informatico"? Niente spazi, niente caratteri strani, 8 caratteri (anche se su questo si può quasi sorvolare). Verifica che il file non abbia blocchi in lettura o altro, visto che nel più ci sta il meno.
    Se proprio da quel nome balordo non ci si può spostare prova a racchiudere il percorso tra due ulteriori doppi apici
    Set Doc = Wrd.Documents.Add(Chr$(34) & Modello & Chr$(34))
Devi accedere o registrarti per scrivere nel forum
12 risposte