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, 1442 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 ..
Neuester Wissensbeitrag
DSL, VDSL

Telekom versendet automatische Kündigungen

(4)

Erfahrungsbericht von Voiper zum Thema DSL, VDSL ...

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

Frage von Booster07 zum Thema Microsoft Office ...

Microsoft Office
gelöst Excel VBA Tabelleblätter kopieren und Umbenennnen (8)

Frage von Florian86 zum Thema Microsoft Office ...

VB for Applications
gelöst Excel - VBA - Fusszeile Text und Grafik (1)

Frage von Juckie zum Thema VB for Applications ...

Microsoft Office
gelöst Excel VBA Datein auslesen (8)

Frage von schwalbepilot zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows 7
gelöst BOOTMGR is missing (auch nach bootrec -RebuildBcd) (21)

Frage von Mipronimo zum Thema Windows 7 ...

Windows Userverwaltung
Windows Freigabe: Zugriff auf alle Ordner trotz Sicherheitseinstellungen (18)

Frage von Pandreas zum Thema Windows Userverwaltung ...

Exchange Server
gelöst MS Exchange 2016 - Basicconfig Fragen (16)

Frage von maddig zum Thema Exchange Server ...

Windows Server
gelöst Rechte als Admin vergeben - Zugriff verweigert (14)

Frage von Ghost108 zum Thema Windows Server ...