VisualBasic mehrere Dateien drucken

einfacheasy

Newbie
Registriert
Mai 2009
Beiträge
4
Hallo zusammen,
...mein erster Eintrag, hoffe ich mache alles richtig.

Ich beschäftige mich seit ein paar Wochen mit VB 2005 und schreibe gerade an meinem ersten Programm und steh auch schon vor meinem ersten großen Problem.

Ich möchte gerne über einen Button "Drucken" mehrere verschiedene Dateien (doc, xls, pdf, max. 20) die ich zuvor mit OpenFileDialog in ein Datagridview eingelesen habe in einem Rutsch im Hintergrund ausdrucken lassen. Über eine Checkbox im Datagridview soll zusätzlich selektiert werden können ob die Datei gedruckt werden soll oder nicht.

Datagridview ist an eine Access.mdb gebunden.

anbei der Quellcode des Druck Buttons.

Private Sub btnDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDrucken.Click

Dim i As Integer
For i = 0 To DokumenteDataGridView.RowCount - 1
If DokumenteDataGridView.Rows(i).Cells(8).Value = True Then

Dim druck As New ProcessStartInfo(DocPfadTextBox.Text)
druck.Verb = "Print"
druck.CreateNoWindow = True
druck.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(druck)

End If
Next i
End Sub


Beispiel:
Als Standarddrucker AdobePDF (für lokale Ausgabe, Papiersparen)
ich habe drei Dateien im Datagridview. PDF - DOC - XLS
Beim drucken auf Butten wird PDF geöffnet und die erste Datei Im DGView 3x gedruckt.
Danach wird wieder alles geschlossen.

Ich glaub da ist noch eine Menge falsch, komme aber einfach nicht weiter.


Hoffe mir kann jemand helfen.

Besten Dank schon mal
einfacheasy
 
Du musst natürlich innerhalb der Schleife auch auf den jeweiligen Pfad des aktiven Dokuments zugreifen. Im Moment steht da immer "DocPfadTextBox.Text" drin, sodass dieses Dokument eben so fot gedruckt wird, wie Dokumente im GridView sind.

PHP:
Private Sub btnDrucken_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnDrucken.Click
        
Dim i As Integer
        For i = 0 To DokumenteDataGridView.RowCount - 1
            If DokumenteDataGridView.Rows(i).Cells(8).Value = True Then

                Dim druck As New ProcessStartInfo(DokumenteDataGridView.Rows(i).Cells(<irgendwas>).Value)
                druck.Verb = "Print"
                druck.CreateNoWindow = True
                druck.WindowStyle = ProcessWindowStyle.Hidden
                Process.Start(druck)

            End If
        Next i
    End Sub
 
Hallo WingX,
Danke für die schnelle Hilfe. Funktioniert fast einwandfrei.

Jetzt wo ich die fertige Code-Zeile sehe ist es auch einleuchtend.
Aber wenn's hängt dann hängts halt.

Word und PDF Dokumente druckt er einwandfrei.

Leider bringt er mir beim Drucken von Excel-Dokumenten immer wieder eine Fehlermeldung.

Win32Exception wurde nicht behandelt.
Der angegebenen Datei ist keine Anwendung zugeordnet
Process.Start(druck) (ist gelb hinterlegt)

Weißt du worans liegen könnte? Hab im Internet nachgesehen, aber das kann ja
alles mögliche sein!!


Danke nochmal, hast mir unglaublich weitergeholfen.

Gruß
einfacheasy
 
Ich habe das gerade mal selber probiert. Ich hatte keine Probleme.
Der Witz ist allerdings, dass du ja die Standardanwendung für die jeweilige Datei startest. Also für pdf Dateien wird eben der PDF Reader gestartet usw. Und für Excel Dateien wurde bei mir eben Excel 2003 gestartet mit Druckdialog. Kann es sein, dass eben für Excel Dateien kein Programm bei dir installiert ist?
 
Hallo WingX,
auf meinem Laptop sind beide Office-Pakete installiert, 2003 und 2007.
Kann es sein das sich da was beißt.

Hab zusätzlich die Verweise für Excel 11 und Excel 12 hinzugefügt. Leider ohne Erfolg.

Hab gelesen, dass eine Neuinstallation das Problem beheben könnte.
Was meinst du dazu.
 
Keine Ahnung. Normalerweise müsste das dann klappen.
Du kannst in der Zeile mit Process.Start(druck) mit F9 einen Haltepunkt setzen, sodass du dir den Inhalt von Druck ansehen kannst. Evtl kannst du dadurch mehr rausbekommen.
Evtl ist ja auch die Pfadangabe falsch.
 
Haltepunkt hat nichts gebracht. Bringt Nach wie Vor..

Win32Exception wurde nicht behandelt.
Der angegebenen Datei ist keine Anwendung zugeordnet
Process.Start(druck) (ist gelb hinterlegt)


Werde das Programm mal an einem anderen Rechner mit XP ausprobieren (auf meinem Laptop ist Vista)

Melde mich dann wieder.

Nochmals vielen Dank.
Hoffe ich werde mein Wissen eines Tages auch weitergeben können.
 
Du musst natürlich, wenn das Programm beim Haltepunkt anhält, dir genau anschauen, wie das Objekt druck aussieht. Ebenso könntest du noch per try...catch ein Exception Handling einbauen. Dadurch würde das Programm den Fehler ausgeben aber trotzdem weiter die Liste durchgehen. Wenn Windows der Meinung ist, dass für die angegebene Datei keine Anwendung hinterlegt ist, dann wird das wohl stimmen und es ist eine Systemeinstellung, die du ändern musst. Das Programm ist tortzdem sehr anfällig für Fehler und Störungen.
 
Zurück
Oben