Newsgroup: it.comp.appl.access
Titolo: Esportazione di un report in formato Word

Avrei bisogno di una mano da qualcuno che ne sappia più di me sui report.
Ho un documento Word (contenente tabelle, immagini, ecc.) che vorrei
utilizzare in un report di Access. In maniera automatica ricavo i dati da
inserire nel documento da alcune tabelle e successivamente vorrei avere la
possibilità di salvare il report in formato Word dando agli utenti la
possibilità di compilare campi rimasti vuoti.
Ad oggi ho provato a copiare il lay-out del documento in un report. Quando
però provo ad esportarlo in Word mi esporta solo il contenuto (i campi che
ho ricavato dalle tabelle) e non il lay-out (limiti delle tabelle,
immagini, ecc.).
Come posso risolvere il problema?
Grazie infinite.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

Massimo71 ha scritto:

Le strade sono due:
1-crei un report, inserisci oggetto non associato e gli dai il file
word, ci sposti sopra i campi tabella con impostazioni stile sfondo
trasparente, bordo trasparente. (con questo metodo non puoi salvare i
file doc)
2-Apri il documento word, clicchi su strumenti-lettere ed
indirizzi-stampa unione e segui la procedura guidata. (per maggiori
info vedi la guida in linea di word)

BR1 ha detto: in data 10/08/2006 9.36:

terza opzione interagisci direttamente con word.
guarda sul sito di karl (
www.donkarl.com/it
) sezione CISA e download 
CISA2 ci sono ottime guide...
anche su 
www.sitocomune.com
 trovi qualcosa se non sbaglio
cmq una volta inizializzato l'oggetto prova a costruirti in word delle 
macro che ti "compilano" il documento per come vorresti fosse fatto da 
access.. poi guarda il codice della macro e inseriscila nel modulo di 
access (cambiando i riferimenti)
ciao
Nick

Nick ha scritto:

Se ci capisci qualche cosa ti posto del codice atto allo scopo:
    Const conDuplicateKey = 3022
    Dim strMsg As String
    Dim dataerr, response As Variant
On Error GoTo Err_Elenco_progressivi_Click
    DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, ,
acMenuVer70
Err_Elenco_progressivi_Click:
    If Err = conDuplicateKey Then
        response = acDataErrContinue
        MsgBox "N°lettera già esistente!" & vbCrLf & "Correggere il
progressivo (cliccare il bottone 'Progressivi'), dandogli l'ultimo
numero di lettera esistente. Ricreare quindi la lettera premendo F5.",
16, "ERRORE!"
        DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70
        DoCmd.GoToRecord , , acPrevious
        Exit Sub
    Else
        GoTo 100
    End If
100
On Error GoTo 0
Dim trasmessoda As String
Dim Cliente As String
    Cliente = IsNull(Me![Contatto])
    trasmessoda = IsNull(Me![CasellaCombinata30])
    If Cliente = True Then
        MsgBox "Compilare il campo 'Coordinatore' ; 'Cliente' e
riprovare!"
        Exit Sub
    End If
   Dim dbLocal As Database
   Dim snpReplaceCodes As Recordset
   Dim strCurrAppDir As String
   Dim strFinalDoc, Path, tmsg As String
   Dim varReplaceWith, nullreplacewith, fs, msoSortbyFileName,
msoSortOrderAscending, i As Variant
   Dim docWord As Word.Document
   Dim appword As Variant
   Dim univoco As String
   On Error GoTo Error_cmdCreateLetter_Click
   Path = DLookup("[path]", "[T_path]")
   '-- Get the application's path and establish the final file name
   Set dbLocal = CurrentDb()
   strCurrAppDir = Left$(dbLocal.Name, InStr(dbLocal.Name, _
         "\lettere.mdb"))
    univoco = Me!IdLettera
   strFinalDoc = Path & "Lettera " & univoco & ".doc"
Set fs = Application.FileSearch
With fs
    .newsearch
    .LookIn = Chr(34) & Path & Chr(34)
    .FileName = "*.*"
    If .Execute > 0 Then
        For i = 1 To .FoundFiles.Count
            If .FoundFiles(i) = Path & "Lettera " & univoco & ".doc"
Then
                tmsg = MsgBox("Lettera già esistente! Per aprire
clicca apri lettera", 0, "Attenzione!!!")
                Exit Sub
            End If
        Next i
    Else
        GoTo 30
    End If
        GoTo 30
    .newsearch
End With
20   On Error Resume Next
     Kill strFinalDoc
   '-- Copy the template so it doesn't get written over.
30  FileCopy strCurrAppDir & "\letteragesti.dot", strFinalDoc
   '-- Create the OLE instance of Word, then activate it.
   Set appword = CreateObject("Word.Application.8")
   '-- Create the object variable
   Set docWord = appword.Documents.Open(strFinalDoc)
   appword.Visible = True
   '-- Open the table of replace codes then cycle through them.
   Set snpReplaceCodes =
dbLocal.OpenRecordset("AutomationWordReplaceCodes", _
         dbOpenSnapshot)
   Do While Not snpReplaceCodes.EOF
      '-- Get the actual value to replace with, then use the
      '   Word replace.
      varReplaceWith = Eval(snpReplaceCodes!ReplaceWithFieldName)
      nullreplacewith = " "
      On Error Resume Next
      If IsNull(varReplaceWith) = True Then
        varReplaceWith = nullreplacewith
      Else
        varReplaceWith = varReplaceWith
      End If
      On Error Resume Next
      With docWord.Content.Find
         If snpReplaceCodes!CodeToReplace = "{DataLettera}" Then
            With .Replacement
               .ClearFormatting
               .Font.Bold = True
               .Font.Italic = True
            End With
         End If
         .Execute FindText:=snpReplaceCodes!CodeToReplace, _
               ReplaceWith:=varReplaceWith, Format:=True, _
               Replace:=wdReplaceAll
       End With
       snpReplaceCodes.MoveNext
   Loop
   snpReplaceCodes.Close
   Exit Sub
Error_cmdCreateLetter_Click:
   Beep
   MsgBox "The Following Error has occurred:" & vbCrLf & _
            Err.Description, vbCritical, "OLE Error!"
   Exit Sub
killErr:
    GoTo 30

 Error_cmdCreateLetter_Click:

Grazie infinite a tutti.
Sto applicando i suggerimenti e devo dire che sono molto utili.
Grazie ancora!
P.S.
Buone ferie a chi ci va o ci andrà!
