*,jpg in UserForm anzeigen?

Moin moin,

hab mal ne Frage - ich hab ne Userform und da is ne Suchfunktion drin. (das war noch nicht die Frage! :smile:))
Also die Suchfunktion findet Ordner im Laufwerk, der Pfad mit den einzelnen Dateien wir in einer Listbox angezeigt (in diesen Ordnern befinden sich Dateien - eine davon ist eine .jpg Datei, also ein Bild.)
Dieses „Bild“ würde ich mir gerne anzeigen lassen. Per Button oder Doppeltklich in der Listbox - also quasi -

Private Sub ListBox2\_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pfad As String

 pfad = ListBox2.List(i)
 pathonly = Left(pfad, InStrRev(pfad, "\"))
 Shell "explorer.exe /e," & pathonly, vbNormalFocus
 Label5 = pathonly
 Image1 = pathonly
End Sub

Habe mir eine MultiPage Seite3 angelegt und da ein Image1.

Dachte eigentlich so könnte es funtzen - tut aba leider nichts. :frowning:

Habt ihr ne Idee wie ich das bewerkstelligen könnte?

Gruß Rolf

Hallo,

Dieses „Bild“ würde ich mir gerne anzeigen lassen. Per Button
oder Doppeltklich in der Listbox - also quasi -

Private Sub ListBox2\_DblClick(ByVal Cancel As
MSForms.ReturnBoolean)
Dim pfad As String

 pfad = ListBox2.List(i)
 pathonly = Left(pfad, InStrRev(pfad, "\"))
 Shell "explorer.exe /e," & pathonly, vbNormalFocus
 Label5 = pathonly
 Image1 = pathonly
End Sub

Das i ist nicht versorgt, Dein Ereignis wird beim Doppelklick ausgeführt, ich denke deshalb Du möchtest die angeklickte Zeile.
Dann sollte da stehen:

pfad = ListBox2.Listindex

Dann schneidest Du den Dateinamen ab, PatOnly sagt das ja auch, da steht dann tatsächlich nur das Verzeichnis ohne Dateinamen.

Was im Aufruf von Shell das ‚/e,‘ soll weiß ich nicht. Lässt Du das weg, geht davon der Explorer auf und zeigt Dir das Verzeichnis, das in PathOnly steht.

Label5 = pathonly

Das könnte funktionieren, weil VB intelligent ist, da sollte aber bessser stehen:

Label5.Caption = pathonly

Dann wird der Pfad (immer noch ohne Dateiname) in Deinem Label5 angezeigt.

Image1 = pathonly

Zwei Fehler.
1.) Pathonly zeigt nur auf ein Verzeichnis, das ist kein Bild. Da sollte Pfad stehen, wenn in der Liste wirklich ein Pfad steht, der auf ein Bild zeigt.

2.) Das funktioniert so nicht, um ein Bild anzuzeigen musst Du LoadPicture verwenden. Etwa so, wenn ich den VB6-Code richtig an VBA angepasst habe:

Image1.Image = LoadPicture(Pfad)

Was Du mit Pathonly und dem Explorer vor hast weiß ich nicht, um das Bild anzuzeigen brauchst Du beides nicht.

Gruß Rainer

Servus,

also der „Pfad“ is ja klar und die jps heissen immer gleich.
Also „Pfad“ c:\test\ordner1\

In dem Ordner sind 4 Files ein File heisst immer bild.jpg

Also sollte es doch mir

 Dim strPfadBild = String

strPfadBild = pfad & "\bild.jpg

funktionieren oder?
und dann eben -

Image1.Image = LoadPicture(strPfadBild)

??

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

also der „Pfad“ is ja klar und die jps heissen immer gleich.
Also „Pfad“ c:\test\ordner1\

In dem Ordner sind 4 Files ein File heisst immer bild.jpg

Also sollte es doch mir

Dim strPfadBild = String

strPfadBild = pfad & "\bild.jpg

funktionieren oder?

Nein. Dein Pfad lautet dann z.B:

„C:\Test\Bild.jpg“

Da ist ein backslash zuviel.

Gruß Rainer

Sorry,

klar das hab ich auch schon raus.
Trotzdem mag er ned.

Fehler - Objekt fehlt…:frowning:(

Das Bild ist aber vorhanden - gaaaaaaaaaaaanz sicha!

-)))

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Fehler - Objekt fehlt…:frowning:(

Das Bild ist aber vorhanden - gaaaaaaaaaaaanz sicha!

Das Bild ist auch kein Objekt, sondern Image1. Ist das aktiv, also Image1.Visible = True, wenn Du das Bild laden willst?

Gruß Rainer

Servus,

doch Visible = true. Aber auf der Seite Page.

Private Sub ListBox2\_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pfad As String
Dim strPfadBild As String


 pfad = ListBox2.List(i)
 pathonly = Left(pfad, InStrRev(pfad, "\"))
 Shell "explorer.exe /e," & pathonly, vbNormalFocus
 Label5 = pathonly

 strPfadBild = pathonly & "bild.jpg"
 Image1 = LoadPicture(strPfadBild)

End Sub

Jetzt stimmt zumindest mal der Pfad. Fehler kommt jetzt mit -->
„Ungültiges Bild“ hae???

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

strPfadBild = pathonly & „bild.jpg“
Image1 = LoadPicture(strPfadBild)

Hmmm. Image1 = …? Kein schöner Stil, Fehlerträchtig.
Gewöhn Dir an, die eigenschaft mit anzugeben.

In VB6 wäre das:

Image1.Picture = …

Aber ich glaube (nicht wissen) die Eigenschaft .Picture gibt es in VBA nicht.

Jetzt stimmt zumindest mal der Pfad. Fehler kommt jetzt mit
–>
„Ungültiges Bild“ hae???

Dann versuch’s mal mit einem Bitmap (Bild.bmp) Eventuell kann Dein VBA kein .jpg lesen.

Gruß Rainer

Servus,

das könnte sein.
Gibts hier n ocx doer sowas für VBA? Womit ich alle „gängigen“ Bild-Format (gif, jpg, bmp, tif ) etc öffnen kann?
Hab gegoogled aber nichts gefunden. :frowning:

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

das könnte sein.
Gibts hier n ocx doer sowas für VBA? Womit ich alle „gängigen“
Bild-Format (gif, jpg, bmp, tif ) etc öffnen kann?
Hab gegoogled aber nichts gefunden. :frowning:

das ist zu speziell VBA, das weiß ich nicht. VB6 hat damit kein Problem, mit VB4 ging’s gar nicht. Das konnte nur .bmp oder .gif.
VBA wird ja immer noch interpretiert, ist also nahe an VB4.

Gruß Rainer

das ist zu speziell VBA, das weiß ich nicht. VB6 hat damit
kein Problem, mit VB4 ging’s gar nicht. Das konnte nur .bmp
oder .gif.
VBA wird ja immer noch interpretiert, ist also nahe an VB4.

Hallo Rainer,

nein, im Infofenter von meinem Excel2000 Vba erscheint VB6.0
Bei Excel97Vba VB 5.0

Soooo rückständig sind „wir“ gar nicht :smile:

Ich stieß eben erst auf diese Beitragsfolge und habe sie bis jetzt nur schnell überflogen, mal schauen wie man es mit VBA hinkriegt so ein Bildchen anzuzeigen.

Gruß
Reinhard

Hi Rolf,

hilft dir das weiter:

Private Sub UserForm_Initialize()
Image1.Picture = LoadPicture(„H:\oo.jpg“)
End Sub

Gruß
Reinhard

-)))

Hi,

ich find aber auch nichts im weltweiten Netz.

Wieder son Mysterium!

Gruß Rolf

ich find aber auch nichts im weltweiten Netz.
Wieder son Mysterium!

Hi Rolf,

kann passieren, ich weiß ja nicht was du gesucht hast.

Gruß
Reinhard

Moin,

naja, nach ImageLoad VBA und Bild anzeigen VBA und VBA ocx für tif, jpg, etc pp

Halt wonach man halt so sucht nech :smile:

Gruß Rolf

Hallo Rolf,

ich kenne mich nicht wirklich aus in VBA, aber ich habe mal fix etwas probiert.

Option Explicit

Private Const MyPic As String = "pic.JPG"
Private Const MyRoot As String = "D:\"

Private Sub LoadImg()
Dim Path As String
Dim Pic As String
If ListBox1.ListIndex = -1 Then
 MsgBox "Keine Eintraege vorhanden!", vbCritical
 Exit Sub
End If
Path = Left(ListBox1.List(ListBox1.ListIndex), InStrRev(ListBox1.List(ListBox1.ListIndex), "\"))
Pic = IIf(Right(Path, 1) = "\", Path & MyPic, Path & "\" & MyPic)
If Not (FileExists(Pic)) Then
 MsgBox "BildDatei: " & Pic & " wurde nicht gefunden!"
 Exit Sub
Else
 Label1.Caption = Path
 Image1.Picture = LoadPicture(Pic)
 Shell "explorer.exe /e," & Path, vbNormalFocus
End If
End Sub

Private Function FileExists(sFile As String)
On Error Resume Next
Dim x As Integer
x = GetAttr(sFile)
FileExists = Err.Number = 0
End Function

Private Sub ListBox1\_Click()
 Call LoadImg
End Sub


Private Sub UserForm\_Activate()
 Call GetFolder(ListBox1, MyRoot)
End Sub

Private Sub GetFolder(Liste As ListBox, sPath As String)
 Dim FSO As New FileSystemObject
 Dim Folder As Folder
 Dim SubFolder As Folder
 If Right$(sPath, 1) "\" Then sPath = sPath & "\"
 Set Folder = FSO.GetFolder(sPath)
 Liste.AddItem sPath
 On Local Error Resume Next
 If Folder.SubFolders.Count \> 0 Then
 For Each SubFolder In Folder.SubFolders
 GetFolder Liste, sPath & SubFolder.Name
 Next
 End If
End Sub

Der Source ist relativ leicht zu verstehen.
Unter der Konstante MyRoot gibst du einfach der Verzeichniss an, welches du durchsuchen möchtest.
Unter MyPic gibst du den Namen des Bildes an, welches in jedem Verzeichnis vorhanden ist. Auf das UserControl tütelst du nun noch eine Listbox(Listbox1) dann noch ein Label ( Label1) und dann noch ein Image ( Image1) drauf und dann sollte es laufen.

Function:

Es werden Dir alle Ordner in dem unter MyRoot angegebenen Verzeichnis aufgelistet und beim Klick darauf wird dann der Path im Label angezeigt und das Bild welches unter MYPic angegben wurde angezeigt.

Das ist doch das was du wolltest oder?

MfG Alex

Moin,

nicht ganz. Die Suche ist bei mir ja schon fix drin.
Und er findet auch was. Nämlich Order in welchen sich *dat-Files und jpg-Files befinden.
Durch klick oder doppel-klick auf den Listbox2-Inhalt (hier eben c:\test\ordner1 …als Beispiel) soll er mir die darinbefindliche Bilddatei in Page3/Image1 anzeigen. Kann auch über nen Button laufen - heisst ich markiere die Zeile der Bilddatei in der Listbox (in der Listbox wird mir der gesamte Pfad angezeigt c:\test\ordner1\Bild1.jpg) und per Button lass ich mir das Bild eben anzeigen …bzw, tät ich mir gern anzeigen lassen.

Achja es kann „vorkommen“ das es auch mal ein gif oder ein tif ist. Aber nur seltenst! :smile:

So sollte es funktionieren. Aber scheinbar macht VBA ein tif oder jpg oder so.

Gruß Rolf

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rolf,

nicht ganz. Die Suche ist bei mir ja schon fix drin.

Ja, ich weiss. Was ich gepostet habe, war ja nur ein Demo wie es funktioniert. Deswegen habe ich die Function GetFolder eben fix eingebaut.

Und er findet auch was. Nämlich Order in welchen sich
*dat-Files und jpg-Files befinden.
Durch klick oder doppel-klick auf den Listbox2-Inhalt (hier
eben c:\test\ordner1 …als Beispiel) soll er mir die
darinbefindliche Bilddatei in Page3/Image1 anzeigen.

Also stehen in der Listbox, nur Dateien ( incl. Pfad) ?

Bsp.:

c:\Test.dat
C:\Ordner1\Rolf.dat
c:\Ordner1\Alex.dat
c:\Ordner1\Rainer.Jpg

Kann auch
über nen Button laufen - heisst ich markiere die Zeile der
Bilddatei in der Listbox (in der Listbox wird mir der gesamte
Pfad angezeigt c:\test\ordner1\Bild1.jpg) und per Button lass
ich mir das Bild eben anzeigen …bzw, tät ich mir gern
anzeigen lassen.

Ok, aber was soll passieren, wenn der User dann auf die *.Dat Datei klickt ? Den letzten Inhalt der Imagebox löschen oder so belassen. Eine Meldung dann ausgeben oder einfach ignorieren? Oder halt zum naechsten Bild in der Listbox springen?

Achja es kann „vorkommen“ das es auch mal ein gif oder ein tif
ist. Aber nur seltenst! :smile:

Ja, ok. Aber das ist unrelevant :wink:

So sollte es funktionieren. Aber scheinbar macht VBA ein tif
oder jpg oder so.

Wie meinst du das?

Kannst du mal deine Suchfunction hier posten oder ggfls. ein Stueck Inhalt der Liste? Somit ist es verstaendlicher!

MfG Alex

Hallo Rolf,

nicht ganz. Die Suche ist bei mir ja schon fix drin.

Ja, ich weiss. Was ich gepostet habe, war ja nur ein Demo wie
es funktioniert. Deswegen habe ich die Function GetFolder eben
fix eingebaut.

Axo, das erklärt einiges :smile:)

Und er findet auch was. Nämlich Order in welchen sich
*dat-Files und jpg-Files befinden.
Durch klick oder doppel-klick auf den Listbox2-Inhalt (hier
eben c:\test\ordner1 …als Beispiel) soll er mir die
darinbefindliche Bilddatei in Page3/Image1 anzeigen.

Also stehen in der Listbox, nur Dateien ( incl. Pfad) ?

Bsp.:

c:\Test.dat
C:\Ordner1\Rolf.dat
c:\Ordner1\Alex.dat
c:\Ordner1\Rainer.Jpg

Genau, so schaut das Suchergebnis in der Listbox aus.

C:\Ordner1\Rolf.dat
c:\Ordner1\Alex.dat
c:\Ordner1\Rainer.Jpg

Jetzt kann ich durch Doppel-Klick den Odner „Ordner1“ öffnen. Dann zeigt er mir aller File (Rolf.dat, Alex.dat und Rainer.jpg) an.
Um das Bild nun anzusehen muss ich nochmal eh klar auf das Bild zum Öffnen klicken.
Das will ich aber nicht machen, sondern gleich das Reiner.jpg-Bild in meiner UserForm anzeigen lassen.

Ok, aber was soll passieren, wenn der User dann auf die *.Dat
Datei klickt ? Den letzten Inhalt der Imagebox löschen oder so
belassen. Eine Meldung dann ausgeben oder einfach ignorieren?
Oder halt zum naechsten Bild in der Listbox springen?

Hmmm - wenn er die *.dat klickt bzw markiert hat und „aus Versehen“ den Button zum Anzeigen klickt, entweder auch anzeigen (sollte doch auch gehn) oder Fehlermeldung MsgBox „Geht ned“

Achja es kann „vorkommen“ das es auch mal ein gif oder ein tif
ist. Aber nur seltenst! :smile:

Ja, ok. Aber das ist unrelevant :wink:

Gut :smile:)

So sollte es funktionieren. Aber scheinbar macht VBA ein tif
oder jpg oder so.

Wie meinst du das?

Laut Rainer (?) macht VBA eher bmp.

Kannst du mal deine Suchfunction hier posten oder ggfls. ein
Stueck Inhalt der Liste? Somit ist es verstaendlicher!

MfG Alex

Kann ich morgen machen, eventl kann ich auch das ganze Excel schicken.

Gruß Rolf

Hallo,

hier mal meine Suche -->

Private Sub cmdRechnungSuchen\_Click()
 Dim sInhalt As String
 Dim strDirDate As String
 Dim strKunde As String
 Dim strVerzeichnis As String
 Dim pfad1 As String
 Dim pfad2 As String

 If OptionButton1.Value = True Then
 strVerzeichnis = "c:\test1"
 End If

 If OptionButton2.Value = True Then
 strVerzeichnis = "c:\test2"
 End If

 If OptionButton3.Value = True Then
 strVerzeichnis = "c:\test3"
 TextBox41 = ""
 End If


strDirDate = DTPicker3
strKunde = TextBox41
nDate = Format(DTPicker3, "yymmdd")
strDirDate = nDate
sInhalt = txtSuchBox
pfad1 = strVerzeichnis & "\" & strDirDate & "\" & strKunde & "\*.\*"
pfad2 = strVerzeichnis & "\" & "" & "\" '& strKunde

If CheckBox1.Value = True Then
pfad = pfad2
Else
pfad = pfad1
End If
Label64 = pfad

Suchbegriff = txtSuchBox
ListBox2.Clear

 If txtSpeicherPfad = "" Then
 MsgBox "Bitte Ordner anlegen"
 cmdOrdnerAnlegen.SetFocus
 Else
 If txtSuchBox = "" Then
 txtSuchBox = "\*"
 'txtSuchBox.SetFocus
 Else
 Set objShell = CreateObject("WScript.Shell")
 CommandLine = "%comspec% /c findstr /m /s /i /c:""" & Suchbegriff & """ """ & pfad & """ "

Set objExecObject = objShell.Exec(CommandLine)
 If Not objExecObject.StdOut.AtEndOfStream Then
 Filelist = Split(Trim(objExecObject.StdOut.ReadAll()), vbCrLf)
 For i = 0 To UBound(Filelist) - 1
 ListBox2.AddItem Filelist(i)
 Label54 = Filelist(i)
 Next
 Else
 MsgBox "Datei nicht gefunden"
 txtSuchBox.SetFocus
 End If
 End If
 End If

End Sub

Das Ergebnis wird mir - wie gesagt in der Listbox angezeigt und ich kann dann die Ordner öffnen -->

Private Sub ListBox2\_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim pfad As String
Dim strPfadBild As String


 pfad = ListBox2.List(i)
 pathonly = Left(pfad, InStrRev(pfad, "\"))
 Shell "explorer.exe /e," & pathonly, vbNormalFocus
 Label5 = pathonly

 Label65 = pathonly & "Invoice\_0.tif"
 strPfadBild = pathonly & "\*.\*"
 Image1 = LoadPicture(strPfadBild)

End Sub

Und hier eben das Bild dann anzeigen…

Gruß Rolf