Filter voor GetOpenFilename

Status
Niet open voor verdere reacties.

DutchOirs

Gebruiker
Lid geworden
30 sep 2009
Berichten
720
Goedemorgen,

Zit met een vraagje over het GetOpenFilename.

Heb in een bepaalde Map diverse notities staan.
Deze notities heb ik als volg genoemd: Not1 20200812_1
Not1 betekent dus een notitie, waarvan 1 dus het nummer is. Het vervolg is de datum.

Nu kan ik met
Code:
mid(Notitie;4;2) het nummer bovenwater halen.

De bedoeling als ik een Notitie open, (bv. nummer 2) ik alleen in de Index alleen de bestanden zie van notitie nummer 2.
Weet even niet hoe ik dit filter moet aanpassen om dit boven water te krijgen.
Heb een vb-tje bijgevoegd.

Heeft iemand een idee?

Bij voorbaat many Thanks.

Dutch
 

Bijlagen

  • GetOpenFilename met filter.xls
    39 KB · Weergaven: 25
Laatst bewerkt:
Klein stukje verder, maar nog geen beoogd doel :-(
 

Bijlagen

  • GetOpenFilename met filter #2.xls
    44,5 KB · Weergaven: 23
Code:
Sub M_snb()
  With Application.FileDialog(1)
     .InitialFileName = "Not2*"
     If .Show Then .Execute
  End With
End Sub
 
Goedenavond snb,

Ben met je oplossing bezig en werkt tot een bepaalde hoogte.

Code:
Sub M_snb()
  Dim NotitieNr As Integer
  ZoekCB.Visible = 1
  Image1.Visible = 1
  HuidigeDir = CurDir                                                              ' zoekt de huidige directory (Excel) op voor een variablele [CurDir]
  ChDir ActiveWorkbook.Worksheets("Blad1").Range("Q5")        ' zet de directory in het Menu in de juiste map voor Foto's
  
  With Worksheets("Blad1") 
    NotitieNr = Mid(.Range("Q7"), 4, 2)                                    ' Notitienummer, waaraan de jpg's gekoppeld zijn
  End With
  
  With Application.FileDialog(1)
     .InitialFileName = "Not" & NotitieNr & "*"
 '    If .Show Then .Execute
     If .Show Then
  '     Image1.Picture = LoadPicture(ActiveWorkbook.Worksheets("Control").Range("Q35") & TmpPhotoName)
       Image1.Picture = LoadPicture(.Execute)
       
     End If
  End With
  ChDir HuidigeDir                                                                 ' zet het oude path weer terug voor MenuBestand Excel-files
End Sub

De opzet is, om in dat menu (wat nu werkt met jouw oplossing) een picture te kiezen welke vervolgens in Image1 moet komen.

Als ik het met .Execute opzet doe, opent hij een nieuw file?
En dat is niet de bedoeling, maar het gekozen picture moet in Imag1 komen.
 

Bijlagen

  • GetOpenFilename met filter #3.xls
    55 KB · Weergaven: 22
Nogmaals goedenavond snb,

Ben eruit.

Wat is het geworden:
Code:
Sub M_snb()
  Dim NotitieNr As Integer, lngCount As Long

  ZoekCB.Visible = 1
  Image1.Visible = 1
  HuidigeDir = CurDir                                                                ' zoekt de huidige directory (Excel) op voor een variablele [CurDir]
  ChDir ActiveWorkbook.Worksheets("Blad1").Range("Q5")          ' zet de directory in het Menu in de juiste map voor Foto's
  
  With Worksheets("Blad1")
    NotitieNr = Mid(.Range("Q7"), 4, 2)
  End With
  
  With Application.FileDialog(1)
    .InitialFileName = "Not" & NotitieNr & "*"
    If .Show Then
      For lngCount = 1 To .SelectedItems.Count
        Image1.Picture = LoadPicture(.SelectedItems(lngCount))
      Next lngCount
    End If
  End With
  ChDir HuidigeDir                               ' zet het oude path weer terug voor MenuBestand Excel-files
End Sub

Met bovenstaande haalt hij alle jpg's die bij een notitie horen eruit en zet deze als keuze in het overzicht.
Vervolgens als je er eentje kiest opent deze in het Image venster.
Dit was de opzet, om niet pictures in verschillende mappen te moeten zetten.

Bedankt voor je hulp bij deze.

Vr. Gr.

Dutch
 
Goedemorgen snb,

Bij uitwerking van m'n prog. loop ik toch tegen een probleempje op.

Gebruik namelijk 2 mappen voor m'n notities. Notities Belangrijke Zaken en Notities Technische zaken.

Voordat het picture wordt opgehaald kijkt hij welke Map hij moet wezen en vervolgens met het notitie nummer haalt hij dan de juiste picture op.

Echter dit Application.FileDialog switch niet met de directory mee.

Code:
Sub M_snb()
  Dim HuidigeDir As String, NotitieNr As Integer, lngCount As Long

  ZoekCB.Visible = 1
  Image1.Visible = 1
  HuidigeDir = CurDir                                           ' slaat de huidige directory (Excel) op voor een variablele [CurDir]
  
  UserForm2.Show                                                ' haalt het juiste Path op
  
MsgBox ("CurDir =  " & CurDir)

  With Worksheets("Blad1")
    NotitieNr = Mid(.Range("Q7"), 4, 2)                         ' haalt het juiste NotitieNummer op
  End With
  
  With Application.FileDialog(1)
     .InitialFileName = "Not" & NotitieNr & "*"
     If .Show Then
        For lngCount = 1 To .SelectedItems.Count
  '          MsgBox .SelectedItems(lngCount)
          Image1.Picture = LoadPicture(.SelectedItems(lngCount))
        Next lngCount
     End If
  End With
  ChDir HuidigeDir                               ' zet het oude path weer terug voor MenuBestand Excel-files
End Sub

Heeft u enig idee?

Zal het vb-tje erbij doen.
 

Bijlagen

  • GetOpenFilename met filter #5.xls
    55 KB · Weergaven: 21
Iets eenvoudiger:
 

Bijlagen

  • __filedialogfilter.xls
    36,5 KB · Weergaven: 24
Vooraf en net voor je filedialog naar de goeie map switchen met je chdir, zou dat niet helpen ?
 
@cow18

Neen, directory wijzigen is overbodig.
 
was een gokje vanop afstand
 
Goedemiddag allen,
Na het weekend het gebeuren weer opgepakt.
Helaas wat snb aanbracht werkt niet. Gebruik namelijk excel 2003.

Wat Cow 13 aanbracht ben ikzelf ook al een tijd bezig.

Probleem alleen is dat deze optie daarbij niet werkt.

Code:
Sub M_snb()
  MsgBox ("M_snb Image lukt, path niet")
  Dim NotitieNr As Integer, lngCount As Long

  ZoekCB.Visible = 1
  Image1.Visible = 1
  HuidigeDir = CurDir                                                      ' zoekt de huidige directory (Excel) op voor een variablele [CurDir]
MsgBox ("Huidige Dir =  " & CurDir)
  
  ChDir ActiveWorkbook.Worksheets("Blad1").Range("Q5")                     ' zet de directory in het Menu in de juiste map voor Foto's
MsgBox ("1 Nieuwe Dir =  " & CurDir)                              ' deze moet geswitcht kunnen worden met Q6
  
  With Worksheets("Blad1")
   NotitieNr = Mid(.Range("Q7"), 4, 2)                      ' haalt het juiste NotitieNr op
  End With

  With Application.FileDialog(1)
     .InitialFileName = "Not" & NotitieNr & "*"
     
 '    If .Show Then .Execute
     If .Show Then
        For lngCount = 1 To .SelectedItems.Count
          Image1.Picture = LoadPicture(.SelectedItems(lngCount))
        Next lngCount
     End If
  End With
MsgBox ("2 Nieuwe Dir =  " & CurDir)
  ChDir HuidigeDir                               ' zet het oude path weer terug voor MenuBestand Excel-files
MsgBox ("3 Weer Huidige Dir =  " & CurDir)
End Sub

Op een of andere manier onthoud het FileDialog het voorgaande gebruikte Path.
Als je met ChDir je Path veranderd pakt het FileDialog NA de 1e keer het niet meer op.
 

Bijlagen

  • GetOpenFilename met filter #4B.xls
    62 KB · Weergaven: 13
Je ziet in O6 een ~ staan. Dat is een ongeldig teken voor een pad.
 
Hoi snb,

Werkt hier wel, maar heb het aangepast en komt niet meer voor.

Desondanks als je het Path switcht door van bv. Q5 naar Q6 te gaan, werkt het niet.

De 1e keer werkt het wel als je het menu opent, maar als je daarna in VBA het Path switcht naar Q6, pakt het FileDialog menu het niet op..
 

Bijlagen

  • GetOpenFilename met filter #4C.xls
    62,5 KB · Weergaven: 13
Als je het pad niet gebruikt, werkt het niet.

With Application.FileDialog(1)
.InitialFileName = "Not" & NotitieNr & "*"

Kijk eens beter in het presenteerblaadje in #7
 
Laatst bewerkt:
Als ik je goed begrijp zou het Pad hier komen?

Code:
  With Application.FileDialog(1)
    .InitialFileName = Pad & "Not" & NotitieNr & "*"
OF  .InitialFileName = CurDir & "Not" & NotitieNr & "*"

wat bedoel je met het presenteerblaadje in #7
 
Laatst bewerkt:
Ok als het paard niet naar het water wil, brengen we het water naar het paard :)

Code:
  With Application.FileDialog(1)
     If ActiveWorkbook.Worksheets("Blad1").Range("Q3").Value = 5 Then .InitialFileName = ActiveWorkbook.Worksheets("Blad1").Range("Q5") & "Not" & NotitieNr & "*"
     If ActiveWorkbook.Worksheets("Blad1").Range("Q3").Value = 6 Then .InitialFileName = ActiveWorkbook.Worksheets("Blad1").Range("Q6") & "Not" & NotitieNr & "*"
     If .Show Then
        For lngCount = 1 To .SelectedItems.Count
          Image1.Picture = LoadPicture(.SelectedItems(lngCount))
        Next lngCount
     End If
  End With


En dit werkt.

Weet niet of dit de schoonste oplossing is, dus als iemand een beter idee heeft?


Vr. Gr.

Dutch
 

Bijlagen

  • GetOpenFilename met filter #4D.xls
    47,5 KB · Weergaven: 22
Laatst bewerkt:
Verder niet gekeken waar het over gaat.
Code:
With Application.FileDialog(1)
   x = Sheets("Blad1").Range("Q3").Value
     If x > 4 And x < 7 Then .InitialFileName = Sheets("Blad1").Range("Q" & x) & "Not" & NotitieNr & "*"
     If .Show Then
 
Hoi HSV,

Nr 5 en nr 6 hebben ieder een aparte pad.
In het Menu van m'n file zitten er zelfs meerdere.
Dus het pad wordt met de keuze bepaald in het menu

Maar thanks voor het meewerken :)

Ben happy dat ik eruit ben :)

Fijne avond nog
 
Niet getest dus!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan