Fumetto (Normal User)
Newbie
Messaggi: 4
Iscritto: 08/04/2020
|
Ciao a Tutti,
sono un nuovo iscritto a questo forum e ho il seguente problema:
utilizzando Visual Basic 2019, ho aggiornato e salvato un foglio di un file excel (fino a qui tutto OK) ed ora vorrei salvarlo in formato PDF (obbligatoriamente perché il foglio excel verrà modificato ogni volta) e poi stampare il file PDF su una stampante predefinita (non necessariamente quella di default).
Ho provato ad entrare nei vari forum, ma non ho trovato la corretta soluzione.
Qualcuno di voi ha già incontrato questo tipo di problema?
|
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Se già hai creato un Excel da VB.Net, o hai importato la libreria e usato: Imports Microsoft.Office.Interop.Excel
oppure hai creato l'oggetto Excel, il codice di esempio funziona con l'oggetto.
Codice sorgente - presumibilmente VB.NET |
Option Strict Off 'serve per disattivare eventuale errore di associazione tardiva, non strettamente necessario Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim Excel As Object Excel = CreateObject("Excel.Application") Dim Workbook As Object = Excel.Workbooks.Open("e:\FileExcel.xlsx") Workbook.ActiveSheet.ExportAsFixedFormat(0, "e:\FileAcrobat.pdf") Excel.Quit() End Sub End Class
|
Excel deve essere presente nel sistema.
Ultima modifica effettuata da Carlo il 08/04/2020 alle 23:02
in programmazione tutto è permesso |
|
Goblin (Member)
Expert
Messaggi: 375
Iscritto: 02/02/2011
|
Postato originariamente da Carlo:
Se già hai creato un Excel da VB.Net, o hai importato la libreria e usato: Imports Microsoft.Office.Interop.Excel
oppure hai creato l'oggetto Excel, il codice di esempio funziona con l'oggetto.
Codice sorgente - presumibilmente VB.NET |
Option Strict Off 'serve per disattivare eventuale errore di associazione tardiva, non strettamente necessario Public Class Form1 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load Dim Excel As Object Excel = CreateObject("Excel.Application") Dim Workbook As Object = Excel.Workbooks.Open("e:\FileExcel.xlsx") Workbook.ActiveSheet.ExportAsFixedFormat(0, "e:\FileAcrobat.pdf") Excel.Quit() End Sub End Class
|
Excel deve essere presente nel sistema. |
Ibis redibis non morieris in bello |
|
Fumetto (Normal User)
Newbie
Messaggi: 4
Iscritto: 08/04/2020
|
Grazie Carlo,
ho inserito il codice nel mio programma e funziona tutto correttamente;
Una sola ulteriore cosa:
Adesso devo fisicamente stampare il file PDF utilizzando una stampante definita (che a volte non è quella predefinita di default): come faccio ad assegnare la stampante dove devo stampare il foglio?
Io sto utilizzando questo codice ….
Codice sorgente - presumibilmente Presentiamoci |
Dim PrintP As New Process
PrintP.StartInfo.FileName = "Nomefile.pdf"
PrintP.StartInfo.Verb = "Print"
PrintP.Start()
|
|
|
Carlo (Member)
Guru
Messaggi: 1344
Iscritto: 29/01/2018
|
Per stampare un PDF, mi appoggio ad Acrobat, il codice seguente ti fa scegliere un file PDF, poi apre il programma che in windows è associato ai file PDF, Acrobat o Acrobat Reader.
Prima dell'apertura puoi scegliere la stampante, e il processo di stampa parte con la visualizzazione del documento, che fa da anteprima.
Codice sorgente - presumibilmente VB.NET |
Dim OpenFileDialog1 As New OpenFileDialog OpenFileDialog1.Filter = "Acrobat *.pdf|*.pdf" If OpenFileDialog1.ShowDialog() = DialogResult.OK Then ' è stato scelto un file pdf Dim NomeFile As String = OpenFileDialog1.FileName Dim PrintDialog1 As New PrintDialog Dim Stampante As String = PrintDialog1.PrinterSettings.PrinterName If PrintDialog1.ShowDialog() = DialogResult.OK Then ' è stata scelta una stampante Dim PrcProcesso As New Process() PrcProcesso.StartInfo.FileName = NomeFile ' determina l'azione PrcProcesso.StartInfo.Verb = "PrintTo" ' in quale stampante PrcProcesso.StartInfo.Arguments = Chr(34) & Stampante & Chr(34) ' nascosto PrcProcesso.StartInfo.WindowStyle = ProcessWindowStyle.Hidden ' l'estensione del file determina l'applicazione che si aprirà PrcProcesso.StartInfo.UseShellExecute = True PrcProcesso.StartInfo.CreateNoWindow = True ' Si apre l'applicazione predefinita per i file pdf PrcProcesso.Start() ' controllo e chiusura del processo PrcProcesso.WaitForInputIdle() If PrcProcesso.Responding Then PrcProcesso.CloseMainWindow() Else PrcProcesso.Kill() End If End If End If
|
Per la creazione di un Excel e salvataggio in PDF ho inserito un progetto: http://www.pierotofy.it/pages/sorgenti/dettagli/19605-Exce ...
Per un lavoro ci ho dovuto dedicare un po' di tempo, e siccome non è proprio tutto scontato, in questo esempio condivido una piccola parte del lavoro, che invece comprende anche l'inserimento di Hyperlink per navigare all'interno dell'Excel e l'inserimento di formule anche dinamiche.
Ultima modifica effettuata da Carlo il 09/04/2020 alle 23:18
in programmazione tutto è permesso |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Forse un moderatore dovrebbe spostare tutta questa discussione nella sezione corretta
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Fumetto (Normal User)
Newbie
Messaggi: 4
Iscritto: 08/04/2020
|
Grazie a Tutti,
ho inserito il Codice che mi avete inviato e funziona tutto perfettamente
|
|