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, 1572 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
Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

VB for Applications
gelöst VBA Excel Skript - Hilfe! (1)

Frage von 133202 zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Code (2)

Frage von specialuser zum Thema VB for Applications ...

VB for Applications
SNMP Abfrage in EXCEL über VBA (7)

Frage von SebastianL zum Thema VB for Applications ...

Neue Wissensbeiträge
Entwicklung

Exploit Development

Anleitung von burhanudinn123 zum Thema Entwicklung ...

Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

(1)

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Heiß diskutierte Inhalte
Netzwerkprotokolle
Leiten "dumme" Switches VLAN-Tags mit durch? (17)

Frage von coltseavers zum Thema Netzwerkprotokolle ...

E-Business
Wo tragt ihr eure privaten Termine ein? (14)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...