[VB.net] problem mit pfad als variable

DVSG

Newbie
Registriert
Okt. 2006
Beiträge
6
hallo zusammen

ich bin gerade daran ein kleines programm zu schreiben, mit dem man ein word dokument auswählen kann und drucken ohne dass man word öffnen muss...

leider will es meinen code noch nicht ganz fressen:

Code:
Public Class Form1

    Private Function ChooseFile() As String
        Dim OpenFileDialog1 As New OpenFileDialog
        With OpenFileDialog1
            .InitialDirectory = "C:\Test"
            .CheckPathExists = True
            .Filter = "word files (*.doc)|*.doc"
            .CheckFileExists = True
            .RestoreDirectory = True
            If .ShowDialog() = Windows.Forms.DialogResult.OK Then
                Return .FileName
            Else
                Return String.Empty
            End If
        End With
    End Function

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim sFilePath As String = ChooseFile()
        MessageBox.Show(sFilePath)

    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim M_wdApp As Word.Application
        Dim m_wdDatei As Word.Document
        M_wdApp = New Word.Application
        M_wdApp.Visible = False 'Word "unsichtbar"
        M_wdApp.Documents.Open("sFilePath") 'Dokument öffnen
        M_wdApp.PrintOut() ' auf Standarddrucker drucken (PDF maker muss Standard sein)
        M_wdApp.ActiveDocument.Close(0)     'Aktives Dokument schließen
        M_wdApp = Nothing 'Variablen freigeben

    End Sub


End Class

mit dem sFilePath und dem Dateipfad stimmt noch etwas nicht, aber ich komme nicht dahinter :(

ich danke für alle antworten!
 
Bekommst Du einen Leerstring zurück? Wenn ja, überprüfe mal in welche if-Abzweigung das Programm einsteigt bei der Bedingung im Debugger.
 
nein, es wird gemeldet dass der pfad falsch/nicht gültig ist...
 
Meldet das der Debugger oder steht das in Deinem Result?

Bitte mal detailliert schildern - mit VB bin ich gar nicht firm.
 
der debuger meldet keinen fehler, dann starte ich das programm.
die datei lässt sich ohne probleme auswählen, drücke ich aber anschliessend den button zum drucken erscheint nach ein paar sekunden folgender fehler:

COMException was unhandled

Die Datei konnte nicht gefunden werden
 
Lass mal das Programm im Debugger Schritt für Schritt durchlaufen - das kann eigentlich gar nicht sein.
 
Möööp!

Was ist denn das hier?

M_wdApp.Documents.Open("sFilePath") 'Dokument öffnen
 
Müsste es nicht lauten:

M_wdApp.Documents.OpenFile(sFilePath)

Weil sonst übergibst Du nicht die Variable sFilePath sondern einen String mit dem Inhalt "sFilePath".
 
hab ich auch schon probiert, folgender fehler tritt dann auf:

Name 'sFilePath' is not declared
 
Klar, weil du sFilePath nur unterm Button2 als lokale Variable deklarierst. Das ist denkbar ungünstig.

Die "" müssen definitiv weg, sonst sucht er nach ner Datei die so heisst und löst die Variable nie auf.

Schreib also lieber die Deklaration um.




Gruß

PS: Hier noch einen Code, den ich mal für Excel verwendet habe, vielleicht hilfts dir ja als Orientierung

set Excel = CreateObject( "Excel.Application" )
Set wkbooks = Excel.Workbooks
wkbooks.Open( "c:\Scripts\Newest\Boundaries.xls" )
i=3
boundary="x"
While boundary<>""
boundary = wkbooks.Item(1).ActiveSheet.Cells(i, 1)
boundary_type = wkbooks.Item(1).ActiveSheet.Cells(i, 2)
if boundary<>"" Then
i=i+1
onemore = ubound(proparray1) + 1
redim preserve proparray1( onemore )
redim preserve proparray2( onemore )
proparray1( onemore ) = boundary
proparray2( onemore ) = boundary_type
end if
Wend
Excel.Quit
 
Zuletzt bearbeitet:
Public Class Form1

Private sFilePath As String

Private Function ChooseFile() As String
Dim OpenFileDialog1 As New OpenFileDialog
With OpenFileDialog1
.InitialDirectory = "C:\Test"
.CheckPathExists = True
.Filter = "word files (*.doc)|*.doc"
.CheckFileExists = True
.RestoreDirectory = True
If .ShowDialog() = Windows.Forms.DialogResult.OK Then
Return .FileName
Else
Return String.Empty
End If
End With
End Function

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim sFilePath As String = ChooseFile() ' Zeile hier bitte entfernen
sFilePath = ChooseFile()
MessageBox.Show(sFilePath)

End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim M_wdApp As Word.Application
Dim m_wdDatei As Word.Document
M_wdApp = New Word.Application
M_wdApp.Visible = False 'Word "unsichtbar"
M_wdApp.Documents.Open(sFilePath) 'Dokument öffnen
M_wdApp.PrintOut() ' auf Standarddrucker drucken (PDF maker muss Standard sein)
M_wdApp.ActiveDocument.Close(0) 'Aktives Dokument schließen
M_wdApp = Nothing 'Variablen freigeben

End Sub


End Class

Damit sollte es dann laufen.
 
Zurück
Oben