Newsgroup: it.comp.appl.access
Titolo: Aiuto urgente con vba

Ho scritto questo codice, che funziona, in modo che alla pressione di
pulsante, il testo scritto in un campo memo [lettera] della maschera venga
inviato a word.
Seguendo alcuni esempi e riadattandoli ho usato la stampa-unione in modo da
creare un modello di documento word "demo.dot"che contenesse i campi
[cognome] e [indirizzo] sostituiti di volta in volta nel contenuto a seconda
dei dati del record in access.
Ho Inserito poi con .insertafter [lettera] il contenuto del campo memo nel
documento modello.
Il mio problema sono le formattazioni, nel senso che vorrei formattare tutto
il testo della lettera in giustificato, ma inserire invece "tutto a destra"
la formula di saluto con la denominazione aziendale.
Non riesco a separare le due cose e ci sto sbattendo da un po' la testa
senza soluzione.
Avevo pensato alla definizione di paragrafi, ma esendo il contenuto della
lettera variabile la cosa non è applicabile.
la soluzione + semplice sarebbe stata quella di immettere anche nel modello
un campo[lettera] da far sostituire alla routine, ma mi da un errore per:
"parametro di stringa troppo lunga" nella riga di codice: .execute....(in
blu) e non riesco a capire perchè.
Grazie per l'aiuto
Private Sub Comando177_Click()
    Dim dbLocale As DAO.Database
    Dim rstCodici As DAO.Recordset
    Dim strDocFinale As String
    Dim varCodici As Variant
    Dim docWord As Word.Document
    Dim rngCorrente As Word.Range
    'On Error GoTo errore_click
    Set dbLocale = CurrentDb()
    strDocFinale = "D:\demo.dot"
    Set appWord = New Word.Application
    Set docWord = appWord.Documents.Add(strDocFinale)
    appWord.Visible = True
    Set rngCorrente = docWord.Content
        With rngCorrente
            .InsertAfter [Lettera] & Chr(13) & Chr(13)
            .InsertAfter "Distinti saluti," & Chr(13) & "Latticini S.p.A" &
Chr(13) & "Servizio Acquisti" & Chr(13) & "Gestione Reclami"
            .Paragraphs.Alignment = wdAlignParagraphJustifyHi
        End With
    Set rstCodici = dbLocale.OpenRecordset("CodiciDaSostituire",
dbOpenSnapshot)
    Do While Not rstCodici.EOF
        varCodici = Eval(rstCodici!NomeCampo)
        varCodici = IIf(IsNull(varCodici), " ", CStr(varCodici))
        With docWord.Content.Find
            If rstCodici!CodiceDaSostituire = "[Cognome]" Then
                With .Replacement
                    .ClearFormatting
                    '.Font.Bold = True
                    .Font.AllCaps = True
                End With
            End If
            If rstCodici!CodiceDaSostituire = "[Indirizzo]" Then
                With .Replacement
                    .ClearFormatting
                    '.Font.Bold = True
                    .Font.AllCaps = True
                End With
            End If
            .Execute FindText:=rstCodici!CodiceDaSostituire,
ReplaceWith:=varCodici, Format:=True, Replace:=wdReplaceAll
        End With
        rstCodici.MoveNext
    Loop
    rstCodici.Close
    Exit Sub
'errore_click:
   ' Beep
   ' Exit Sub
End Sub

 ha scritto nel messaggio
news:Owt3a.120993$ZE.33...@twister2.libero.it...

Prova a dividere in sezioni logiche la lettera. Ovvero, "ingabbia" il testo
in una tabella e imposta la formattazione di ogni cella. Altro metodo è
quello di definirti degli stili che applicherai al testo...
Ciao.
--
Sergio MAZZA