Ciao a Tutti, ho una query con campi incrociati
Vorrei esportare tutti in un file Word che contenga una tabella con il campo Fila per colonna, in campo Loc per riga e il valore Espr1 come contenuto della cella in tabella.
Ho provato con questo codice
Ma mi restituisce sempre l'errore durante l'esportazione "L'elemento con il nome specificato non esiste"...
Esiste un modo più semplice per esportare le query in un file word con un pulsante rapidamente, dato che ho una trentina di query a campi incrociati da esportare e stampare...purtroppo dalle query non escono tutte le stesse colonne e righe a variano per questo mi verrebbe difficile e lungo fare 30 report ....
Allego foto di una query a campi incrociati e un file modello di word.
Grazie
SQL:
TRANSFORM Last([COGNOME] & " " & [NOME] & " " & [LIBRETTO] & " " & [MORTE]) AS Espr1
SELECT griglia.FILA
FROM griglia
WHERE (((griglia.Loc) Between 1 And 9))
GROUP BY griglia.PIANO, griglia.LOTTO, griglia.FILA
ORDER BY griglia.FILA DESC , griglia.Loc DESC , griglia.Loc
PIVOT griglia.Loc;
Vorrei esportare tutti in un file Word che contenga una tabella con il campo Fila per colonna, in campo Loc per riga e il valore Espr1 come contenuto della cella in tabella.
Ho provato con questo codice
Visual Basic:
Private Sub Comando43_Click()
Dim objWord As Object
Dim objDoc As Object
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strTemplate As String
Dim strQuery As String
Dim tbl As Object
Dim numCols As Integer
Dim numRows As Integer
Dim i As Integer
Dim rowIndex As Integer
On Error GoTo ErrHandler
' Percorso del modello Word
strTemplate = "C:\control\dat\modello.docx"
If Dir(strTemplate) = "" Then
MsgBox "Il modello Word non esiste al percorso specificato.", vbCritical
Exit Sub
End If
' Nome della query
strQuery = "gigi" ' Cambia con il nome corretto della query
' Aprire il database e il recordset
Set db = CurrentDb
Set rs = db.OpenRecordset(strQuery, dbOpenSnapshot)
' Verifica che la query restituisca dati
If rs.EOF Then
MsgBox "La query non ha restituito alcun record.", vbExclamation
Exit Sub
End If
' Aprire Word e il modello
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add(Template:=strTemplate)
' Creare una tabella in Word
numCols = rs.Fields.Count ' Numero di colonne
rs.MoveLast
numRows = rs.RecordCount + 1 ' Numero di righe
rs.MoveFirst
Set tbl = objDoc.Tables.Add(objDoc.Content, numRows, numCols)
tbl.Style = "Tabella Griglia"
' Inserire l'intestazione nella tabella
For i = 0 To rs.Fields.Count - 1
tbl.Cell(1, i + 1).Range.Text = rs.Fields(i).Name
Next i
' Inserire i dati nella tabella
rowIndex = 2
Do While Not rs.EOF
For i = 0 To rs.Fields.Count - 1
If IsNull(rs.Fields(i).Value) Then
tbl.Cell(rowIndex, i + 1).Range.Text = ""
Else
tbl.Cell(rowIndex, i + 1).Range.Text = rs.Fields(i).Value & ""
End If
Next i
rs.MoveNext
rowIndex = rowIndex + 1
Loop
' Salvare il documento
objDoc.SaveAs2 "C:\control\dat\Output.docx"
objDoc.Close
objWord.Quit
MsgBox "Esportazione completata con successo!", vbInformation
ExitHandler:
' Rilasciare oggetti
On Error Resume Next
rs.Close
Set rs = Nothing
Set db = Nothing
Set objDoc = Nothing
Set objWord = Nothing
Exit Sub
ErrHandler:
MsgBox "Errore durante l'esportazione: " & Err.Description, vbCritical
Resume ExitHandler
End Sub
Ma mi restituisce sempre l'errore durante l'esportazione "L'elemento con il nome specificato non esiste"...
Esiste un modo più semplice per esportare le query in un file word con un pulsante rapidamente, dato che ho una trentina di query a campi incrociati da esportare e stampare...purtroppo dalle query non escono tutte le stesse colonne e righe a variano per questo mi verrebbe difficile e lungo fare 30 report ....
Allego foto di una query a campi incrociati e un file modello di word.
Grazie