08/04/20 17:51
Fumetto
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?
aaa
08/04/20 20:20
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.
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 08/04/20 21:02
in programmazione tutto è permesso
08/04/20 23:04
Goblin
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.
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.
Non vale .... tu giochi "in casa"
G.
Ibis redibis non morieris in bello
09/04/20 19:44
Carlo
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.
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:
pierotofy.it/pages/sorgenti/dettagli/19605-ExcelToPdf/
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 09/04/20 21:18
in programmazione tutto è permesso
09/04/20 22:36
nessuno
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à.