Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

vFile = Application.GetOpenFilename Dateiname aus Variable
#1
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?
Antworten Top
#2
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
[-] Folgende(r) 1 Nutzer sagt Danke an DeltaX für diesen Beitrag:
  • datenmaus
Antworten Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an volti für diesen Beitrag:
  • datenmaus
Antworten Top
#4
(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.
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • DeltaX
Antworten Top
#5
Dann will ich mal hoffen, dass ich nicht zu blöd war einen Link einzufügen und es tatsächlich ein Bug ist Confused
Antworten Top
#6
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 ?
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • datenmaus
Antworten Top
#7
Hallöchen,

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

Du weißt, warum? An dem Update liegt es nicht ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • datenmaus
Antworten Top
#8
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
[-] Folgende(r) 1 Nutzer sagt Danke an DeltaX für diesen Beitrag:
  • datenmaus
Antworten Top
#9
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • datenmaus
Antworten Top
#10
Hallöchen,

jahrelang hat's keinen gestört, aber nun ... Dürfte etwa seit 2017,2018 so gewesen sein.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • datenmaus
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste