Oppure

Loading
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" :rotfl::rotfl::k::k::k:
G.
Ibis redibis non morieris in bello
09/04/20 9:41
Fumetto
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 ….
                    Dim PrintP As New Process
                    PrintP.StartInfo.FileName = "Nomefile.pdf"
                    PrintP.StartInfo.Verb = "Print"
                    PrintP.Start()


Eventualmente potrei usare un altro codice che tu puoi suggerire.

:k::k::k:
aaa
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à.
10/04/20 9:46
Fumetto
Grazie a Tutti,
ho inserito il Codice che mi avete inviato e funziona tutto perfettamente :k::k::k:
aaa