› Sviluppare funzionalita su Microsoft Office con VBA › Compilazione foglio PDF.
-
AutoreArticoli
-
Buonasera, mi scuso ma mastico veramente poco Excel e soprattutto VBA. Se qualcuno mi potesse aiutare gliene sarei grato. Ho un database Excel. Con alcuni dei dati presenti dovrei riempire dei moduli PDF, che andrebbe poi salvato, ma non so da dove partire. Qualcuno potrebbe darmi una mano? Grazie mille
Ciao, innanzitutto ci vorrebero i file (Excel e PDF) per capire di cosa si tratta. Poi tu vorresti compilare un modulo già esistente oppure generare un PDF da Excel e quindi creare un modulo prelevando i dati da Foglio Excel? Il secondo caso è la strada più semplice.
Per il primo credo che ci sia bisogno di Adobe Acrobat Standard o Pro installato (non versione Reader).
Inizia con allegare i file.
Sull’altro forum ti è stato detto da dove partire e Alexps81 te lo ha sottolineato.
Devi solo riprodurre il PDF su un secondo foglio e con dei CERCA.VERT prendi i dati dal primo foglio.
Poi salvi tale foglio in PDF manualmente (o con una macro che puoi registrare).
Per fare tutto ciò non occorre essere esperti; il CERCA.VERT fa parte dell’ABC di Excel.
Tu cosa hai provato a fare?
Innanzitutto grazie per le risposte. Il problema che sto avendo è che se trasformo con Adobe acrobat pro il file in excel perde tutta la formattazione. Per questo avrei preferito che venisse compilato un file pdf esistente con i dati presenti in una riga excel. Purtroppo per questione di privacy devo omettere alcune informazioni. Grazie ancora dell'aiuto.
Allegati:
You must be logged in to view attached files.Ma che difficoltà hai a riprodurre il PDF su un foglio Excel?
Quello che hai allegato è di una banalità disarmante.
Quello reale è diverso da quello allegato ?
Non so se sto sbagliando ragionamento ma, siccome il file dovrebbe essere poi riconvertito in PDF causa firma digitale, mi sembrava più "semplice" gestire il PDF per evitare, anche perché non saprei farlo, di dover creare poi un vba per il salvataggio.
Non so se sto sbagliando ragionamento ma
Stai sbagliando a non rispondere alle domande che ti vengono fatte.
1) Hai provato a riprodurre il PDF su un secondo foglio del file di Excel?
2) Hai provato su tale secondo foglio ad inserire dei CERCA.VERT() che vanno a prendere i dati dal primo foglio?
3) Conosci la funzione CERCA.VERT()?
4) Hai provato manualmente a salvare tale foglio in PDF?
5) Hai provato, attivando il registratore di macro, a registrare una macro che faccia il salvataggio in PDF?
Per attivare il registratore di macro occorre che sulla barra multifunzione sia disponibile la scheda Sviluppo; qualora non lo fosse guarda qui https://www.andreaminini.com/excel/come-abilitare-la-scheda-sviluppo-su-excel
Quando hai fatto tutto questo (che è la maniera più semplice) e dovessi avere ancora problemi allega il file di Excel con quanto fatto e si vedrà
Buonasera, alla fine ho trovato una macro che riempie i segnalibri impostati nel file word (pdf non riuscivo) con i valori delle celle selezionate. Pertanto diciamo che non ho risolto ma ovviato in questo modo. Ho provato ad impostarlo sul foglio excel, come avete suggerito, è molto più semplice a mezzo cerca.vert il problema era la formattazione ed essendo un documento legale lo volevo il più allineato possibile. Grazie a tutti
il problema era la formattazione ed essendo un documento legale lo volevo il più allineato possibile. Grazie a tutti
Vuoi allegare il foglio Excel che hai creato e dire perchè non va bene rispetto al PDF che hai allegato al post 54818?
Buonasera, alla fine ho trovato una macro
Le macro non si trovano ma si scrivono; vuoi allegare anche questa?
Buonasera, mi riprometto di caricare tutte le macro quando ho finito il progetto. Per quanto concerne il File Excel, non ho detto assolutamente che non va bene. Come dite voi per lo stesso fine ci sono più strade. C'è chi si trova meglio in un modo chi in un altro e non è detto che ci sia il più giusto. Comunque alla fine del progetto allegherò tutte le macro che ho utilizzato. Ringraziando tutti voi per gli aiuti, me ne serviranno ancora un paio se non vi spiace.
Buonasera, mi riprometto di caricare tutte le macro quando ho finito il progetto.
Non puoi pubblicare, visto che dovresti averla già, quella che va a compilare il file di Word con i dati di Excel?
Magari può essere utile ad altri (a cominciare da me) che avessero la necessità di inserire in un documento Word con i segnalibri dati provenienti da un foglio Excel.
Option Explicit
'--------------------------------------------------------------
' ? MAIN PROCEDURE
'--------------------------------------------------------------
Public Sub FillWordBookmarks()Dim wb As Workbook 'this Excel workbook
Dim ws As Worksheet 'worksheet that holds the data
Dim wdApp As Object 'Word.Application (late-binding)
Dim wdDoc As Object 'Word.Document
Dim sFolder As String 'folder where both files live
Dim sWordFile As String 'Word template name
Dim sOutFile As String 'name of the completed Word file
Dim dictBookmarks As Object 'Scripting.Dictionary – maps bookmark ? cell addressOn Error GoTo ErrHandler
'--- 1. Set references to the workbook / worksheet ----------------
Set wb = ThisWorkbook
Set ws = wb.Worksheets("XXXXX") '? change to your sheet name'--- 2. Find the folder that contains this workbook ----------------
sFolder = wb.Path
If Len(sFolder) = 0 Then
MsgBox "The workbook must be saved on disk before running this macro.", _
vbExclamation, "Folder not found"
Exit Sub
End If'--- 3. Word file names --------------------------------------------
sWordFile = "xxx.docx" '? name of the Word template
sOutFile = "xxxxxxx.docx" '? name for the saved file'--- 4. Build a dictionary that links each bookmark to a cell ------
' Bookmark name ? Excel address (relative to ws)
Set dictBookmarks = CreateObject("Scripting.Dictionary")' ---- EDIT / ADD YOUR MAPPINGS HERE ---------------------------
' Format: dictBookmarks.Add "BookmarkName", "A2"
dictBookmarks.Add "NOME 1° segnalibro", "Posizione cella Excel"
dictBookmarks.Add "NOME 2° segnalibro", "Posizione cella Excel"AGGIUNGERE QUANTE RIGHE PER OGNI SEGNALIBRO E SCRIVERNE LA POSIZIONE DELLA CELLA EXCEL.
' ----------------------------------------------------------------
'--- 5. Start Word (late binding – no reference needed) ------------
Set wdApp = CreateObject("Word.Application")
wdApp.Visible = True 'set to False if you do NOT want to show Word'--- 6. Open the template -------------------------------------------
Set wdDoc = wdApp.Documents.Open(fileName:= _
sFolder & Application.PathSeparator & sWordFile, _
ReadOnly:=False, AddToRecentFiles:=False)'--- 7. Loop through the dictionary and fill each bookmark -----------
Dim bmName As Variant
For Each bmName In dictBookmarks.Keys
If wdDoc.Bookmarks.Exists(bmName) Then
Dim cellAddr As String
cellAddr = dictBookmarks(bmName) 'e.g. "B2"Dim cellValue As String
cellValue = CStr(ws.Range(cellAddr).Value) 'convert to string'Insert the text – the existing bookmark content is replaced
wdDoc.Bookmarks(bmName).Range.Text = cellValue'Re-create the bookmark because writing text destroys it
wdDoc.Bookmarks.Add Name:=bmName, Range:=wdDoc.Bookmarks(bmName).Range
Else
Debug.Print "Bookmark '" & bmName & "' not found in the Word file."
End If
Next bmName'--- 8. Save the completed document (you can change the path) -------
wdDoc.SaveAs2 fileName:=sFolder & Application.PathSeparator & sOutFile, _
FileFormat:=wdFormatXMLDocument 'docxMsgBox "Word document created successfully:" & vbCrLf & sOutFile, _
vbInformation, "Done"CleanExit:
'--- 9. Clean-up ----------------------------------------------------
If Not wdDoc Is Nothing Then wdDoc.Close SaveChanges:=False
If Not wdApp Is Nothing Then wdApp.QuitSet wdDoc = Nothing
Set wdApp = Nothing
Set dictBookmarks = Nothing
Exit SubErrHandler:
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, "Run-time error"
Resume CleanExit
End SubI FILE EXCEL E WORD DEVONO TROVARSI NELLA STESSA CARTELLA
-
AutoreArticoli
