Zugriff auf Excel (Pfad kann nicht gefunden werden)

Hallo zusammen,

ich will Daten aus ein Excel Spreadsheet in eine Textbox einlesen. Dies funktioniert auch alles Wunderbar.
Nun wenn ich aber den kompletten Ordner auf einen anderen Computer kopiere funktioniert dies nicht mehr.
Wie kann ich meinen Code so umändern, dass er jedesmal die Datei findet?

hier m ein Code:
PHP:
Dim oexcel As Object = CreateObject("Excel.application")
        Dim obook As Object = oexcel.workbooks.open("C:\Users\Home\Desktop\Product\User Details.xls")
        Dim osheet As Object = obook.worksheets(1)
        Dim n As Integer = 1
        Dim testdata As String
        obook.worksheets(1).unprotect()
        testdata = osheet.Range("B2").Value 'Name of employee
        ComboBox4.Items.Add(testdata)

ich habe ausserdem noch ein Button in meiner Form1 integriert. Wenn ich auch diesen Button klicke öffnet dies die
entsprechende Excel Datei, welches unabhängig ist ob ich den kompletten Ordner auf einen anderen PC kopiere.
Ich benutze dafür den Code

Process.start("Product\User Details.xls")

Wie kann ich den Code oben ebenfals ändern, sodass der PC die Datei findet in ("Product\User Details.xls")

Für jeden Tip wäre ich Dankbar.
 
Hi

Du verwendest beim Auslesen der Datei einen absoluten Pfad, beim Öffnen einen Relativen.
Beim relativen Pfad wird ausgehend vom Ausführungsverzeichnis der Pfad zusammengebaut..
Du solltest also beim Auslesen der Datei auch einen relativen Pfad verwenden
 
Hi

:confused:
Absoluter Pfad: C:\Users\Home\Desktop\Product\User Details.xls (Pfad vom Device an)
Relativer Pfad: \Product\User Details.xls (Pfad relative vom Aufruf an)

Du musst einen relativen Pfad verwenden!
 
Hallo Nico,

ich glaube ich habe mich nicht deutlich ausgedrückt. Das mit dem relativen Pfad war mir klar, dass ist auch was ich erzielen möchte.
Denoch habe ich nicht bisher es geschafft bzw. wie ich dies mache, da ich ja Excel application aufrufen und von dort aus will er den Pfad haben
und kann mit einem relativen Pfad nichts anfangen.
 
Aso :)

Dann bau den Pfad doch mit Path.Combine() zusammen

Den Pfad deiner Anwendung kriegst du über Assembly.GetExecutingAssembly().Location. Den Dateinamen musst du dann abschneiden und über oben genannte Funktion die Neue Datei anhängen. (sollte auch mit Replace() gehen)
 
Ok, vielen Dank. Ich habe es bisher nicht geschafft das es funktioniert aber werde es weiter versuchen.
Werde mich nochmal melden wenn ich gar nicht weiter komme.
 
Hallo Nico,

ich bin am ende angekommen und habe momentan keine andere Idee wie ich dies lösen könnte.
Ich habe folgenden Code ausprobiert jedoch funkt der auch nicht. Brauche einen neuen Tip von
einem Profi, bin nur ein Amateur der versucht seinen Job ein wenig leichter zu machen...

PHP:
Dim pfad As String
        pfad = Application.StartupPath
        pfad = Mid(pfad, 1, InStr(pfad, "common\User Details.xls"))
        Dim oexcel As Object = CreateObject("Excel.application")
        Dim obook As Object = oexcel.workbooks.open(pfad)
        Dim osheet As Object = obook.worksheets(1)
        'Dim n As Integer = 1
        Dim testdata As String
        obook.worksheets(1).unprotect()
        testdata = osheet.Range("B2").Value 'Name of employee
        ComboBox4.Items.Add(testdata)
 
Hi

Wieso nutzt du nicht die Funktionen, die ich dir genannt hab?!
Du sollte den Pfad mit Path.Combine zusammebauen! Das machst du nicht!

Setz an die Stelle im Code einen Breakpoint und schau dir auch mal an, was in den diversen Propertys steht!

Nochmal das vorgehen:
- Pfad abfragen, in dem die Exe läuft
- Path.Combine den neuen Pfad für deine Exceldatei zusammensetzen
- diesen Pfad an Excel übergeben.
 

Neue Beiträge

Zurück