Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Excel VBA, FileDialog(msoFileDialogOpen) - Filterung nach Dateityp UND Filename

Frage Entwicklung VB for Applications

Mitglied: chef1568

chef1568 (Level 1) - Jetzt verbinden

17.02.2015, aktualisiert 23.02.2015, 1513 Aufrufe, 6 Kommentare

Hallo Zusammen,

Ich möchte eine gewisse Vorfilterung bei der Dateiauswahl machen.
Hierzu sollte nach FileTyp und einem String im Dateinamen erfolgen. Leider funktioniert derzet nur eine dieser Optionen.

1. Bei untem gezeigtem Code wird nach dem Stringinhalt gefiltert - aber nicht die Dateiedung beachtet
2. wenn ich die Dateitypauswahl nutze ist die Stringfilterung wieder nicht aktiv.

01.
Dim Path, Nummer As String 
02.
 
03.
'Pfadauswahl 
04.
Path = "C:\Users\Public\Documents\" 
05.
 
06.
'Nummernauswahl 
07.
Nummer = ActiveSheet.Range("C7") 
08.
 
09.
'Öffne Auswahldialog 
10.
With Application.FileDialog(msoFileDialogOpen) 
11.
    .AllowMultiSelect = False 
12.
    .Title = "Protokoll laden" 
13.
    .Filters.Clear 
14.
    .Filters.Add "Protokoll", "*.xml", 1 
15.
    .Filters.Add "Alle Dateien", "*.*" 
16.
    '.InitialView = msoFileDialogViewDetails 
17.
    .InitialFileName = Path & "*" & Nummer & "*" 
18.
    If .Show Then 
19.
        XMLDATEI = .SelectedItems(1) 
20.
    End If 
21.
End With
wie kann ich beide Optionen realisieren?

Danke schonmal
Mitglied: 114757
17.02.2015, aktualisiert um 22:14 Uhr
Moinsens,
01.
Dim Path, Nummer As String 
02.
 
03.
'Pfadauswahl 
04.
Path = "C:\Users\Public\Documents\" 
05.
 
06.
'Nummernauswahl 
07.
Nummer = ActiveSheet.Range("C7") 
08.
 
09.
'Öffne Auswahldialog 
10.
With Application.FileDialog(msoFileDialogOpen) 
11.
    .AllowMultiSelect = False 
12.
    .Title = "Protokoll laden" 
13.
    .Filters.Clear 
14.
    .Filters.Add "Protokoll", "*.xml", 1 
15.
    .Filters.Add "Alle Dateien", "*.*" 
16.
    .FilterIndex = 1 
17.
    .InitialFileName = Path & "*" & Nummer & "*" & ".xml" 
18.
    If .Show Then 
19.
        XMLDATEI = .SelectedItems(1) 
20.
    End If 
21.
End With
Gruß jodel32
Bitte warten ..
Mitglied: chef1568
17.02.2015 um 22:29 Uhr
Hallo jodel32,

leider hat deine Änderung nichts bewirkt...

mfg
Bitte warten ..
Mitglied: colinardo
LÖSUNG 23.02.2015, aktualisiert um 14:49 Uhr
Hallo chef1586,
so wie jodel es geschrieben hat geht es nur wenn der Filter auf *.* steht, weil der Dialog sonst die Dateierweiterung am Ende entfernt.
Mit einem dirty Trick kannst du den Dialog trotzdem dazu zwingen das gewünschte zu machen (Namensfilter + FIlterauswahl), indem du die Dateierweiterung einfach verdoppelst
01.
Dim Path, Nummer As String 
02.
 
03.
'Pfadauswahl 
04.
Path = "C:\Users\Public\Documents\" 
05.
 
06.
'Nummernauswahl 
07.
Nummer = ActiveSheet.Range("C7") 
08.
 
09.
'Öffne Auswahldialog 
10.
With Application.FileDialog(msoFileDialogOpen) 
11.
    .AllowMultiSelect = False 
12.
    .Title = "Protokoll laden" 
13.
    .Filters.Clear 
14.
    .Filters.Add "Protokoll", "*.xml", 1 
15.
    .Filters.Add "Alle Dateien", "*.*" 
16.
    .FilterIndex = 1 
17.
    .InitialFileName = Path & "*" & Nummer & "*" & ".xml" & ".xml" 
18.
    If .Show Then 
19.
        XMLDATEI = .SelectedItems(1) 
20.
    End If 
21.
End With
Grüße Uwe
Bitte warten ..
Mitglied: chef1568
23.02.2015 um 14:51 Uhr
Genau das ist das was ich gesucht habe.
Danke Uwe!

Was ich allerdings nicht wirklich verstehen kann, da ich ja der Dateityp xml bereits als Filter definiert hatte - dieser aber nicht ausgewertet wird...

Mfg
Bitte warten ..
Mitglied: colinardo
23.02.2015, aktualisiert um 15:42 Uhr
Zitat von chef1568:
Was ich allerdings nicht wirklich verstehen kann, da ich ja der Dateityp xml bereits als Filter definiert hatte - dieser aber
nicht ausgewertet wird...
Der Dateinamensfilter im Eingabefeld überschreibt den Dateitypfilter. Kannst du ganz einfach nachprüfen Und wenn dann dort als Name etwas steht wie *Nummer* anstatt *Nummer*.xml nimmt er alle Dateien mit der Nummer im Namen, egal welches Dateityps, ist leider so.

Grüße Uwe
Bitte warten ..
Mitglied: chef1568
23.02.2015 um 19:46 Uhr
Hallo Uwe,

ja, das funktioniert alles super.
Aber bei vielen Elementen (>500) dauert es ziemlich lange, bis sich das Fenster zur Dateiauswahl erstmal öffnet.
Mir ist schon klar, dass auch das Script einige Zeit benötigt um die >500 Dateinamen zu zerlegen - aber gleich 2...3sec ist schon recht lange.

Gibt es da eine performantere Lösung?

mfg
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst EXCEL VBA Zellen verbinden. MERGE (6)

Frage von Aximand zum Thema VB for Applications ...

Microsoft Office
gelöst Excel VBA In Userform Maske Text nach Eingabe löschen (1)

Frage von kluthi69 zum Thema Microsoft Office ...

Microsoft Office
Unterordner durchsuchen Excel VBA (1)

Frage von schwalbepilot zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel VBA: Automatische Konvertierung von Textdatei (.txt) zu Exceldatei (.xlsx) (7)

Frage von Booster07 zum Thema Microsoft Office ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (50)

Frage von sabines zum Thema Internet ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
Windows 2016 Hyper-V und VHDS (18)

Frage von emeriks zum Thema Windows Server ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...