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, 1369 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...

Mit freundlichen Grüßen
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...

Mit freundlichen Grüßen
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?

Mit freundlichen Grüßen
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
VB for Applications
Excel VBA Sortierung von Daten (4)

Frage von easy4breezy zum Thema VB for Applications ...

VB for Applications
gelöst Excel VBA Eine oder mehrere Zellen Verschieben (2)

Frage von batchnewbie zum Thema VB for Applications ...

Microsoft Office
Excel VBA: Tranferieren von Werten aus Quelldatei in die Masterdatei mit SVERWEIS (3)

Frage von peter.schroeder zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (13)

Frage von Motte990 zum Thema Microsoft Office ...