Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Presentiamoci - Con Visual Basic 2019 stampare Foglio Excel in file PDF
Forum - Presentiamoci - Con Visual Basic 2019 stampare Foglio Excel in file PDF

Avatar
Fumetto (Normal User)
Newbie


Messaggi: 4
Iscritto: 08/04/2020

Segnala al moderatore
Postato alle 19:51
Mercoledì, 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?



  

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 22:20
Mercoledì, 08/04/2020
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

  1. Option Strict Off 'serve per disattivare eventuale errore di associazione tardiva, non strettamente necessario
  2.  
  3. Public Class Form1
  4.  
  5.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.  
  7.         Dim Excel As Object
  8.         Excel = CreateObject("Excel.Application")
  9.         Dim Workbook As Object = Excel.Workbooks.Open("e:\FileExcel.xlsx")
  10.         Workbook.ActiveSheet.ExportAsFixedFormat(0, "e:\FileAcrobat.pdf")
  11.         Excel.Quit()
  12.  
  13.     End Sub
  14. End Class


Excel deve essere presente nel sistema.

Ultima modifica effettuata da Carlo il 08/04/2020 alle 23:02


in programmazione tutto è permesso
PM Quote
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Segnala al moderatore
Postato alle 1:04
Giovedì, 09/04/2020
Testo quotato

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

  1. Option Strict Off 'serve per disattivare eventuale errore di associazione tardiva, non strettamente necessario
  2.  
  3. Public Class Form1
  4.  
  5.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  6.  
  7.         Dim Excel As Object
  8.         Excel = CreateObject("Excel.Application")
  9.         Dim Workbook As Object = Excel.Workbooks.Open("e:\FileExcel.xlsx")
  10.         Workbook.ActiveSheet.ExportAsFixedFormat(0, "e:\FileAcrobat.pdf")
  11.         Excel.Quit()
  12.  
  13.     End Sub
  14. End Class


Excel deve essere presente nel sistema.



Non vale .... tu giochi "in casa"  :rotfl::rotfl::k::k::k:
G.


Ibis redibis non morieris in bello
PM Quote
Avatar
Fumetto (Normal User)
Newbie


Messaggi: 4
Iscritto: 08/04/2020

Segnala al moderatore
Postato alle 11:41
Giovedì, 09/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

  1. Dim PrintP As New Process
  2.                     PrintP.StartInfo.FileName = "Nomefile.pdf"
  3.                     PrintP.StartInfo.Verb = "Print"
  4.                     PrintP.Start()



Eventualmente potrei usare un altro codice che tu puoi suggerire.

:k::k::k:

PM Quote
Avatar
Carlo (Member)
Guru


Messaggi: 1344
Iscritto: 29/01/2018

Segnala al moderatore
Postato alle 21:44
Giovedì, 09/04/2020
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

  1. Dim OpenFileDialog1 As New OpenFileDialog
  2. OpenFileDialog1.Filter = "Acrobat *.pdf|*.pdf"
  3. If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
  4.     ' è stato scelto un file pdf
  5.     Dim NomeFile As String = OpenFileDialog1.FileName
  6.     Dim PrintDialog1 As New PrintDialog
  7.     Dim Stampante As String = PrintDialog1.PrinterSettings.PrinterName
  8.     If PrintDialog1.ShowDialog() = DialogResult.OK Then
  9.         ' è stata scelta una stampante
  10.         Dim PrcProcesso As New Process()
  11.         PrcProcesso.StartInfo.FileName = NomeFile
  12.         ' determina l'azione
  13.         PrcProcesso.StartInfo.Verb = "PrintTo"
  14.         ' in quale stampante
  15.         PrcProcesso.StartInfo.Arguments = Chr(34) & Stampante & Chr(34)
  16.         ' nascosto
  17.         PrcProcesso.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
  18.         ' l'estensione del file determina l'applicazione che si aprirà
  19.         PrcProcesso.StartInfo.UseShellExecute = True
  20.         PrcProcesso.StartInfo.CreateNoWindow = True
  21.         ' Si apre l'applicazione predefinita per i file pdf
  22.         PrcProcesso.Start()
  23.         ' controllo e chiusura del processo
  24.         PrcProcesso.WaitForInputIdle()
  25.         If PrcProcesso.Responding Then
  26.                PrcProcesso.CloseMainWindow()
  27.         Else
  28.                PrcProcesso.Kill()
  29.         End If
  30.     End If
  31. 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
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6402
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 0:36
Venerdì, 10/04/2020
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à.
PM Quote
Avatar
Fumetto (Normal User)
Newbie


Messaggi: 4
Iscritto: 08/04/2020

Segnala al moderatore
Postato alle 11:46
Venerdì, 10/04/2020
Grazie a Tutti,
ho inserito il Codice che mi avete inviato e funziona tutto perfettamente :k::k::k:

PM Quote