Registriert seit: 22.02.2025
Version(en): 365
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
Registriert seit: 18.10.2020
Version(en): 365
Registriert seit: 22.09.2024
Version(en): 2010
23.02.2025, 14:30
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2025, 14:30 von knobbi38.)
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
Registriert seit: 22.02.2025
Version(en): 365
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Verwende application.filedialog(3)
Registriert seit: 22.02.2025
Version(en): 365
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
Sub M_snb()
with application.filedialog(3)
if .show then msgbox .selecteditems(1)
end with
End sub
Verzichte auf überflüssige Variablen.
Registriert seit: 22.02.2025
Version(en): 365
23.02.2025, 23:27
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2025, 23:46 von struct.)
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
Registriert seit: 29.09.2015
Version(en): 2030,5
Code:
Sub M_snb()
with application.filedialog(3)
if .show then msgbox "Z:\" & dir(.selecteditems(1))
end with
End sub
Registriert seit: 22.09.2024
Version(en): 2010
24.02.2025, 00:09
(Dieser Beitrag wurde zuletzt bearbeitet: 24.02.2025, 00:10 von knobbi38.)
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