In access io l'ho sviluppato in questo modo e funziona perfettamente:
1) ho creato il Modulo per la funzione "EncodeBase64(bytes)"
2) creo la FatturaPDF utilizzando il seguente codice:
Dim NomeAllegato As String, Allegato As String
NomeAllegato = "Fattura " + Esercizio + "_" + Mese + "_" + NumeroDocumento + ".pdf"
Allegato = "C:\FatturazioneElettronica\FatturePDF\" + NomeAllegato
Forms![Fattura]!Allegato = Allegato
ChDir "C:\FatturazioneElettronica\FatturePDF\"
DoCmd.OutputTo acOutputReport, "Fattura", "PDFFormat(*.pdf)", NomeAllegato, False
3) Codifica Base64 della FatturaPDF
Dim bytes
Dim B64String
Dim str As String
Dim Base64Byte() As Byte
str = Forms![Fattura]!Allegato
With CreateObject("ADODB.Stream")
.Open
.Type = ADODB.adTypeBinary
.LoadFromFile str
bytes = .Read
.Close
End With
B64String = EncodeBase64(bytes)
4) scrittura nel file xml
Dim NomeFileOut As String, VV As String
NomeFileOut = "IT" + [Codice Fiscale] + "_" + ProgressivoInvio + ".xml"
'Directory salvataggio file xml
ChDir "C:\FatturazioneElettronica\FattureXML"
Open NomeFileOut For Output As #1
VV = "<Allegati>": Print #1, VV
VV = "<NomeAttachment>" + NomeAllegato + "</NomeAttachment>": Print #1, VV
VV = "<FormatoAttachment>PDF</FormatoAttachment>": Print #1, VV
VV = " <DescrizioneAttachment>Documento Elettronico</DescrizioneAttachment>": Print #1, VV
VV = "<Attachment>" + B64String + "</Attachment>": Print #1, VV
VV = "</Allegati>": Print #1, VV
Con la stessa procedura si possono inserire altri allegati aggiuntivi (file di qualsiasi estensione)
(attenzione all'aggiunta di allegati: il file xml generato non deve superare i 5 MB se da inviare al SDI tramite PEC)