Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

VBS Dateiauswahl klappt nicht bei jeder Endung (ShellApp.BrowseForFolder)

Frage Entwicklung VB for Applications

Mitglied: djbazo

djbazo (Level 1) - Jetzt verbinden

30.05.2011, aktualisiert 18.10.2012, 9633 Aufrufe, 9 Kommentare

Hallo zusammen,

folgendes Skript soll zur Auswahl von .DOC Dateien verwendet werden.
Leider klappt dies nicht, es funktionieren aber zB DOCX, PDF Dateien...

01.
  Dim ShellApp, Ret, s, i 
02.
 Set ShellApp = CreateObject("Shell.Application") 
03.
  
04.
 On Error Resume Next 
05.
 Set Ret = ShellApp.BrowseForFolder(0, "Bitte wählen Sie die Datei aus, die Sie übertragen möchten:", 16384) 
06.
 s = Ret.title 
07.
 If Err.number <> 0 Then 
08.
 WScript.Quit 
09.
 End If 
10.
  
11.
 s = GetPath(Ret, i) 
12.
 MsgBox s 
13.
   
14.
 Function GetPath(Fil, iItem) 
15.
 Dim Pt1, fPar, sn, Obj, sType 
16.
 On Error Resume Next 
17.
 sn = Fil.title 
18.
 MsgBox "sn (File/Folder title): " &sn 
19.
 Set fPar = Fil.parentfolder 
20.
 MsgBox "fPar (File/Folder parent Folder): " &fpar 
21.
  
22.
 Set Obj = fPar.parsename(sn) '--return item selected as a Shell FolderItem. 
23.
 MsgBox "Obj (return item selected as a Shell FolderItem): " &obj 
24.
  
25.
 '--weed out namespaces and drives. If it's a namespace or drive it can't 
26.
 '--return a FolderItem so the last Call caused an error and Obj is therefore 
27.
 '--Not part of the filesystem: 
28.
  
29.
 If Obj.isfilesystem = false Then 
30.
 Pt1 = instr(sn, ":") 
31.
 If Pt1 = 0 Then 
32.
 iItem = 0  '--namespace. 
33.
 getpath = sn 
34.
 Else 
35.
 iItem = 1 '--drive. 
36.
 getpath = mid(sn, (Pt1 - 1), 2) & "\"  '--Get letter before : and add "\" If drive. 
37.
 End If 
38.
 Set Obj = nothing 
39.
 exit Function 
40.
 End If 
41.
  
42.
 '--it's a file or folder. find out which and Get path: 
43.
 sType = Obj.type  '--Get object Type as shown in folder Details view. 
44.
 MsgBox "sType (Get object Type as shown in folder Details view): " &sType '-- Should be able to use: If Obj.IsFolder = True..... but it doesn't work. 
45.
  
46.
 If instr(sType, "Bestandsmap") = 0 Then  '-TAALGEVOELIG-in detail view a folder will be type "File Folder". 
47.
 iItem = 3  '--file. 
48.
 Else 
49.
 iItem = 2  '--folder. 
50.
 End If 
51.
  
52.
 getpath = Obj.path 
53.
 Set Obj = Nothing 
54.
 End Function
Hat jemand einen Tipp woran es liegen könnte?
Danke schonmal vorab!
Mitglied: bastla
30.05.2011, aktualisiert 18.10.2012
Hallo djbazo!
Hat jemand einen Tipp woran es liegen könnte?
Hatte noch nicht wirklich Zeit, mir das anzusehen, aber vielleicht geht's ja auch mit einer der Methoden von hier ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
31.05.2011 um 04:12 Uhr
hallo djbazo,

das ist schon etwas merkwürdig, warum es mit windowseigenen Dateien nicht so richtig will.
ich würde auch erst einmal mit der BrowseForFile-Methode arbeiten, da du ja Dateien auswählen
möchtest. Das ginge in VBS in etwa so:
01.
 
02.
MsgBox BrowseForFile("D:\", "All Files|*.*") 
03.
 
04.
Function BrowseForFile(pstrPath, pstrFilter) 
05.
  Set objDialog = CreateObject("UserAccounts.CommonDialog") 
06.
  objDialog.Filter = pstrFilter 
07.
  objDialog.InitialDir = pstrPath 
08.
  objDialog.Flags = &H80000 + &H4 + &H8 
09.
  intResult = objDialog.ShowOpen 
10.
  BrowseForFile = objDialog.FileName 
11.
End Function
Trotzdem, sehr interessante Frage!
Bei mir gehen keinerlei docs,xls,pps,txt,jpg, etc. -> also alles, was von den Redmondern kommt.
Und auf der MS-Seite findet man auch nichts zu diesem Problem.
Vielleicht weiß bastla , warum das so ist.

Gruss
Tsuki
Bitte warten ..
Mitglied: djbazo
31.05.2011 um 09:19 Uhr
Hallo bastla, tsuki,

vielen Dank für die Antworten. Ich hatte nun die Zeit diese zu testen.
Leider bekomme ich in meiner (Vista) Umgebung den Fehler

Active-X-Komponenten kann kein Objekt erstellen: 'UserAccounts.CommonDialog'
Code: 800A01AD

Grüße
Bitte warten ..
Mitglied: bastla
31.05.2011 um 13:16 Uhr
Hallo djbazo und Tsuki!

Warum der Code hinsichtlich "docx" etc nicht tut, was er soll, kann ich leider auch nicht sagen - als Alternative gäbe es noch den im letzten Kommentar des oben verlinkten Beitrages von Dani vorgestellten Ansatz ...

Grüße
bastla
Bitte warten ..
Mitglied: TsukiSan
31.05.2011 um 14:50 Uhr
moin zusammen,

danke erst einmal an bastla! Ich weiß, auch wenn du's nicht weißt - warum? - ist das für mich aber schon mal eine Antwort!

@djbazo.
nun wissen wir schon mal, dass du mit Vista (de Luna) kämpfst
Du könntest dir eventuell die comdlg32.ocx laden und im Systemordner ablegen.
Danach ginge es mit VBS wie folgt:
01.
Set oCD = WScript.CreateObject("MSComDlg.CommonDialog") 
02.
 
03.
oCD.DialogTitle = "Bitte wählen Sie die Datei aus, die Sie übertragen möchten:" 
04.
oCD.MaxFileSize = 260 
05.
oCD.ShowOpen 
06.
 
07.
MsgBox oCD.FileName
Eventuell hilft dir das an dieser Stelle

Gruss
Tsuki
Bitte warten ..
Mitglied: djbazo
01.06.2011 um 09:26 Uhr
Das passt für mich!
Vielen Dank für Eure schnellen Antworten!
Bitte warten ..
Mitglied: Friemler
02.06.2011 um 16:56 Uhr
Hallo bastla,

unter Windows 7 funktioniert leider weder UserAccounts.CommonDialog noch SAFRCFileDlg.FileOpen. Ich habe vor längerer Zeit in diesem Forum eine Lösung gefunden, die auf allen Windowsversionen mit mindestens IE5 (oder war es IE4?) läuft, ohne DLLs/OCXe installieren zu müssen.

Es wird eine unsichtbare Instanz vom Internet Explorer mit der Seite about:blank geöffnet. In diese Seite wird der HTML-Code für einen Datei-Upload-Dialog injiziert und dann ein Klick auf den "Durchsuchen"-Button simuliert. Daraufhin öffnet sich der bekannte Dateiauswahldialog von Windows. Im Titel des Fensters steht jedoch immer "Datei zum Hochladen auswählen" und es kann nicht der Name einer neu anzulegenden Datei angegeben werden. Außerdem gibt es ab IE8 wieder ein Problem: Man muss zuerst Internetoptionen -> Registerkarte Sicherheit -> Stufe anpassen -> Lokalen Verzeichnispfad beim Hochladen von Dateien auf einen Server einbeziehen aktivieren, sonst erhält man als Ergebnis immer C:\fakepath\NameDerDatei. Ein neues Privacy-/Sicherheitsfeature der Redmonder.

Hier aber trotzdem mal der (etwas abgespeckte) Code, vielleicht hilft es noch irgendwem weiter. Im Original wird eine Klasse deklariert, die auch noch einen Ordnerauswahldialog auf Basis von BrowseForFolder mit erweiterter Funktionalität enthält.
01.
WScript.Echo ChooseFile 
02.
 
03.
Function ChooseFile() 
04.
  Dim Q2, sRet, IE 
05.
 
06.
  Q2 = Chr(34) 
07.
 
08.
  ChooseFile = "" 
09.
 
10.
  Set IE = CreateObject("InternetExplorer.Application") 
11.
 
12.
  IE.Visible = False 
13.
  IE.Navigate("about:blank") 
14.
 
15.
  Do Until IE.ReadyState = 4 
16.
  Loop 
17.
 
18.
  IE.Document.Write "<HTML><BODY><INPUT ID=" & Q2 & "Fil" & Q2 & " Type=" & Q2 & "file" & Q2 & "></BODY></HTML>" 
19.
 
20.
  With IE.Document.All.Fil 
21.
    .Focus 
22.
    .Click 
23.
    sRet = .Value 
24.
  End With 
25.
 
26.
  IE.Quit 
27.
  Set IE = Nothing 
28.
 
29.
  ChooseFile = Replace(sRet, "%20", " ") 
30.
End Function
Gruß
Friemler
Bitte warten ..
Mitglied: TsukiSan
02.06.2011 um 17:11 Uhr
Hallo Friemler,
unter Windows 7 funktioniert leider weder UserAccounts.CommonDialog noch SAFRCFileDlg.FileOpen.
ab VISTA scheinbar nicht mehr

aber die comdlg32.ocx macht es immer noch

Gruss
Tsuki
Bitte warten ..
Mitglied: Friemler
02.06.2011 um 17:39 Uhr
Hallo Tsuki,

hatte ich schon gelesen, die Methode mit dem IE funktioniert halt eben mit Bordmitteln und ist unabhängig davon, ob eine DLL/OCX für eine bestimmte Windowsversion geeignet ist. Dumm ist natürlich das dafür nötige Umstellen der Sicherheitsoptionen ab IE8.

Gruß
Friemler
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Dateiauswahl mit dialog
Frage von lasterBatch & Shell

Hallo, ich will ein Dateiauswahldialog (Linux Shell) mit dialog (Version 1.1-20120215) verwenden. Die Funktion fselect ist ja nicht wirklich ...

JavaScript
Bei Seitenaufruf Dateiauswahl öffnen - JavaScript
Frage von justanumber44JavaScript8 Kommentare

Schönen guten Abend :-) Ich bräuchte kurz Hilfe bei einem Script das Automatisch beim aufrufen den Auswahl-Dialog für Dateien ...

Viren und Trojaner
Neuer Crypto? Endung "sdvztvGw"
gelöst Frage von emeriksViren und Trojaner5 Kommentare

Hi, ich will nichts beschreien, aber wir haben heute so zwischen ca. 10 und 11 Uhr an einem unserer ...

Viren und Trojaner
CryptoLocker und seine wechselnden Datei-Endungen
Erfahrungsbericht von TharenViren und Trojaner24 Kommentare

Hallo, aus aktuellem Anlass hier ein Screenshot eines vor kurzem bemerkten Falls der LOCKY-Familie (siehe Bilder) interessant ist, dass ...

Neue Wissensbeiträge
Internet

USA: Die FCC schaff die Netzneutralität ab

Information von Frank vor 58 MinutenInternet2 Kommentare

Jetzt beschädigt US-Präsident Donald Trump auch noch das Internet. Der neu eingesetzte FCC-Chef Ajit Pai ist bekannter Gegner einer ...

DSL, VDSL

ALL-BM200VDSL2V - Neues VDSL-Modem mit Vectoring von Allnet

Information von Lochkartenstanzer vor 4 StundenDSL, VDSL1 Kommentar

Moin, Falls jemand eine Alternative zu dem draytek sucht: Gruß lks

Windows 10

Microsoft bestätigt DMA-Policy-Problem in Win10 v1709

Information von DerWoWusste vor 4 StundenWindows 10

Wer sein Gerät mit der DMA-Policy absichert, bekommt evtl. Hardwareprobleme in v1709 von Win10. Warum? Weil v1709 endlich "richtig" ...

Verschlüsselung & Zertifikate

Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows

Information von ticuta1 vor 8 StundenVerschlüsselung & Zertifikate

Interessant Die Hölle friert ein weiteres Stück zu: Microsoft integriert OpenSSH in Windows SSH-Kommando in CMD.exe und PowerShell

Heiß diskutierte Inhalte
Windows Server
RODC kann nicht aus Domäne entfernt werden
Frage von NilsvLehnWindows Server19 Kommentare

HAllo, ich arbeite in einem Universitätsnetzwerk mit 3 Standorten. Die Standorte haben alle ein ESXi Cluster und auf diesen ...

Hardware
Kein Bild mit nur einer bestimmten Grafikkarten - Mainboard Konfiguration
gelöst Frage von bestelittHardware18 Kommentare

Hallo zusammen, ich hatte schon einmal eine ähnliche Frage gestellt. Damals hatte ich genau das gleiche Problem. Allerdings lies ...

Netzwerkmanagement
Mehrere Netzwerkadapter in einem PC zu einem Switch zusammenfügen
Frage von prodriveNetzwerkmanagement18 Kommentare

Hallo zusammen Vorweg, ich konnte schon einige IT-Probleme mit Hilfe dieses Forums lösen. Wirklich klasse hier! Doch für das ...

Hardware
Links klick bei Maus funktioniert nicht
gelöst Frage von Pablu23Hardware16 Kommentare

Hallo erstmal. Ich habe ein Problem mit meiner relativ alten maus jedoch denke ich nicht das es an der ...