Clever-Excel-Forum

Normale Version: vFile = Application.GetOpenFilename Dateiname aus Variable
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen,

ich nutze folgendes:
vFile = Application.GetOpenFilename("Textdateien (*.txt), *.txt")
Klappt soweit, ich kann dann die entsprechende Datei auswählen

Jetzt möchte ich es etwas komfortabler nutzen.
Es gibt eine Variable (da steht der Dateiname drin) und ich möchte nun das nicht alle *.txt Files aufgelistet werden, sonder nur die mit der Variable.txt.

Geht das?
Das dürfte nur hiermit gehen

docs.microsoft.com/de-de/office/vba/api/office.filedialog.filters

PS Die bescheidene Forensoftware lässt mich keine Links einfügen Angry

Test
Hallo Datenmaus,

das dürfte nur mit der API-Version gehen.

Hier mal auf die Schnelle ein Muster zum Spielen:

Code:

Option Explicit

Private Declare PtrSafe Function GetActiveWindow Lib "user32.dll" () As Long
Private Declare PtrSafe Function GetOpenFileNameA Lib "comdlg32.dll" ( _
        pOpenfilename As OPENFILENAME) As Long

Type OPENFILENAME
     lStructSize As Long
     hwndOwner As LongPtr
     hInstance As LongPtr
     lpstrFilter As String
     lpstrCustomFilter As String
     nMaxCustFilter As Long
     nFilterIndex As Long
     lpstrFile As String
     nMaxFile As Long
     lpstrFileTitle As String
     nMaxFileTitle As Long
     lpstrInitialDir As String
     lpstrTitle As String
     flags As Long
     nFileOffset As Integer
     nFileExtension As Integer
     lpstrDefExt As String
     lCustData As LongPtr
     lpfnHook As LongPtr
     lpTemplateName As String
End Type

Private Const OFN_READONLY = &H1
Private Const OFN_OVERWRITEPROMPT = &H2
Private Const OFN_HIDEREADONLY = &H4
Private Const OFN_NOCHANGEDIR = &H8
Private Const OFN_SHOWHELP = &H10
Private Const OFN_ENABLEHOOK = &H20
Private Const OFN_ENABLETEMPLATE = &H40
Private Const OFN_ENABLETEMPLATEHANDLE = &H80
Private Const OFN_NOVALIDATE = &H100
Private Const OFN_ALLOWMULTISELECT = &H200
Private Const OFN_EXTENSIONDIFFERENT = &H400
Private Const OFN_PATHMUSTEXIST = &H800
Private Const OFN_FILEMUSTEXIST = &H1000
Private Const OFN_CREATEPROMPT = &H2000
Private Const OFN_SHAREAWARE = &H4000
Private Const OFN_NOREADONLYRETURN = &H8000&
Private Const OFN_NOTESTFILECREATE = &H10000
Private Const OFN_NONETWORKBUTTON = &H20000
Private Const OFN_NOLONGNAMES = &H40000
Private Const OFN_EXPLORER = &H80000
Private Const OFN_NODEREFERENCELINKS = &H100000
Private Const OFN_LONGNAMES = &H200000


' Datei auswählen und öffnen
Function Waehle_Datei_API() As String
' Funktion zeigt einen DateiÖffen-Dialog mit erweiterten Features an.
  Dim sDatei As String, sPfad As String, sTitel As String, sErw As String
  Dim sFilter As String

  sFilter = "Herber*.x*"                   ' Dateifilter setzen
  sPfad = ThisWorkbook.Path
  sDatei = "MeineDatei.xlsm"
  If sDatei = "" Then sDatei = "*.*"
  sTitel = "Datei öffnen"
  sErw = ".xls*"

  If Trim(sPfad) = "" Then sPfad = CurDir
  If Right(sPfad, 1) <> "\" Then sPfad = sPfad & "\"

  Dim OF As OPENFILENAME

  With OF
      .lStructSize = LenB(OF)    ' Achtung LenB ist wichtig
      .hwndOwner = GetActiveWindow()
      .lpstrTitle = sTitel & vbNullChar
      .lpstrFilter = "Meine Auswahl" & vbNullChar & sFilter & vbNullChar & vbNullChar
      .nFilterIndex = 0
      .flags = OFN_FILEMUSTEXIST Or OFN_OVERWRITEPROMPT Or OFN_EXPLORER Or OFN_NOCHANGEDIR
      .lpstrFile = sDatei & Space(256) & vbNullChar
      .nMaxFile = Len(.lpstrFile)
      .lpstrFileTitle = Space(256) & vbNullChar
      .nMaxFileTitle = Len(.lpstrFileTitle)
      .lpstrInitialDir = sPfad & vbNullChar
      .lpstrDefExt = sErw
  End With
  If GetOpenFileNameA(OF) = 0 Then Exit Function
  sDatei = Left(OF.lpstrFile, InStr(OF.lpstrFile, Chr(0)) - 1)
  If Dir$(sDatei) <> "" Then
     MsgBox "Datei ausgewählt!"
  End If
End Function

_________
viele Grüße
Karl-Heinz
(18.01.2021, 15:42)DeltaX schrieb: [ -> ]Das dürfte nur hiermit gehen

docs.microsoft.com/de-de/office/vba/api/office.filedialog.filters

PS Die bescheidene Forensoftware lässt mich keine Links einfügen Angry

Ich habe einen Thread bei Bugs erstellt:
https://www.clever-excel-forum.de/Thread-Externe-Links

Kann wohl nur mit dem erst kürzlich erfolgten Update der Forensoftware zusammen hängen.
Dann will ich mal hoffen, dass ich nicht zu blöd war einen Link einzufügen und es tatsächlich ein Bug ist Confused
Reicht schon:

Code:
Sub M_snb()
  c00 = "G:\OF\adres.txt"

  With Application.FileDialog(1)
    .InitialFileName = c00
    If .Show Then MsgBox .SelectedItems(1)
  End With
End Sub

Wenn du die Name schon kennst, reicht

Code:
Workbooks.open "G:\OF\adres.txt"
oder
Code:
Getobject("G:\OF\adres.txt")


@Volti
Zitat:das dürfte nur mit der API-Version gehen.

Kennst du dich wohl mit Excel aus ?
Hallöchen,

Zitat:Die bescheidene Forensoftware lässt mich keine Links einfügen

Du weißt, warum? An dem Update liegt es nicht ...
Ich weiß nicht warum. Test, Test

Aber jetzt scheint es zu gehen, warum auch immer MSDN

Na ja, bin ich eben zu blöd Huh
Folge meinem obigen Link zum "scheinbaren" Bug.
Ist halt blöd, wenn die Blacklist *file* berücksichtigt(e) und MS die Frechheit besitzt, etwas filedialog zu nennen.
21
Hallöchen,

jahrelang hat's keinen gestört, aber nun ... Dürfte etwa seit 2017,2018 so gewesen sein.