Application.GetOpenFilename: Dateiname mit lokalem Pfad
#1
Ich nutze Application.GetOpenFilename um einen Dateinamen an ein Excel/vba Skript zu übergeben. Der Dateiname wird später an eine dll übergeben, in der die Datei dann geöffnet wird. Dafür wird aber ein lokaler Pfad benötigt, also mit Laufwerksbuchstaben. Eine URL geht nicht.

Leider liefert Application.GetOpenFilename aber immer eine URL (https:...), wenn ich eine Datei auf einem Sharepoint auswähle. Und zwar auch dann, wenn ich den Sharepoint auf einen Laufwerksbuchstaben mappe und im Dialog die Datei über diesen Laufwerbuchstaben auswähle (also etwa z:\testdatei.dat).

Kann man dieses Verhalten ändern? Und wenn nicht, gibt es einen Weg aus der Sharepoint URL einen lokalen Pfad zu generieren?

Gruß,
Jürgen
Antworten Top
#2
https://github.com/cristianbuse/VBA-FileTools
Antworten Top
#3
Hallo Jürgen,

warum sollte man den URL Pfad in einen Laufwerksbuchstaben umwandeln wollen? Normalerweise ist das nicht notwendig und aufwendig.

Gruß
Knobbi38

siehe auch:
https://stackoverflow.com/questions/3373...6#65967886
Antworten Top
#4
Hallo Knobbi,

danke für den Link. Eventuell löst das das Problem. Muss ich mir mal in Ruhe ansehen. Im ersten Versuch hats leider nicht funktioniert. Aber ich denke, das war mein Fehler.

Zitat:warum sollte man den URL Pfad in einen Laufwerksbuchstaben umwandeln wollen? Normalerweise ist das nicht notwendig und aufwendig.

Nun, das steht im Prinzip im Eingangspost. Der Filename wird mit Pfad an eine DLL übergeben, in der die Datei dann in C bzw. in Fortran geöffnet werden. Und das geht eben nur mit einem lokalen Pfad.

Jürgen
Antworten Top
#5
Verwende application.filedialog(3)
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#6
Zitat:Verwende application.filedialog(3)

da kommt leider auch nur eine URL raus. Oder habe ich da was falsch gemacht?

Code:
Public Function DateiName() As String
Dim f As Office.FileDialog
Set f = Application.FileDialog(3)

f.Show

If f.SelectedItems.Count > 0 Then ' Prüfen auf 'Abbrechen'-Button
    DateiName = f.SelectedItems(1)
End If
End Function
Antworten Top
#7
Code:
Sub M_snb()
  with application.filedialog(3)
    if .show then msgbox .selecteditems(1)
  end with
End sub

Verzichte auf überflüssige Variablen.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#8
Ja, das ist natürlich eleganter. Führt aber wie zu erwarten zu keinem anderen Ergebnis: Es wird eine URL zurück geliefert.

Jürgen

Zitat:https://github.com/cristianbuse/VBA-FileTools

Funktioniert leider nicht. Es wird nur ein leerer String zurück geliefert.

Jürgen

(23.02.2025, 14:30)knobbi38 schrieb: Hallo Jürgen,

warum sollte man den URL Pfad in einen Laufwerksbuchstaben umwandeln wollen? Normalerweise ist das nicht notwendig und aufwendig.

Gruß
Knobbi38

siehe auch:
https://stackoverflow.com/questions/3373...6#65967886

Leider funktioniert keine der verschiedenen Varianten in dem Threat für meinen Fall. Einige liefern zwar ein Ergebnis, aber leider nicht das richtige.

Jürgen
Antworten Top
#9
Code:
Sub M_snb()
  with application.filedialog(3)
    if .show then msgbox "Z:\" & dir(.selecteditems(1))
  end with
End sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#10
Hallo,

da dein C-Programm keine URL Angabe verarbeiten kann und die anderen Lösungsansätze nicht funktionieren, würde ich ganz pragmatisch die Datei in einen lokalen Ordner verschieben und dann an die DLL übergeben.

Gruß
Knobbi38
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste