Thema Datum  Von Nutzer Rating
Antwort
01.02.2008 06:57:25 kratzbaum
NotSolved
01.02.2008 11:36:19 Holger
NotSolved
01.02.2008 13:42:43 kratzbaum
NotSolved
02.02.2008 12:05:40 Holger
NotSolved
04.02.2008 07:27:54 kratzbaum
NotSolved
04.02.2008 15:05:35 Holger
NotSolved
05.02.2008 08:04:10 kratzbaum
NotSolved
05.02.2008 10:55:44 Holger
NotSolved
05.02.2008 12:44:34 kratzbaum
NotSolved
Blau Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:VBA image.picture = loa
05.02.2008 13:11:43 Holger
NotSolved
06.02.2008 11:13:58 kratzbaum
NotSolved
06.02.2008 11:33:01 kratzbaum
NotSolved
06.02.2008 11:44:59 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
05.02.2008 13:11:43
Views:
1094
Rating: Antwort:
  Ja
Thema:
Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:VBA image.picture = loa
Hallo kratzbaum,
jetzt glaube ich zu wissen, was schief läuft. Benenne das Label "Anzeige" in "VerzAnzeige" um.
Sorry, dass ich das bisher übersehen habe.
Gruß
Holger



kratzbaum schrieb am 05.02.2008 12:44:34:



Hallo Holger

Vielen Dank für deine schnelle Antwort!

Hoffe habe deine Anweisungen richtig verstanden, habe alles dementsprechend geändert, aber funktioniert immer noch nicht.

Private Sub UserForm_Initialize()
Image1.PictureSizeMode = fmPictureSizeModeZoom
VerzAnzeige.Caption = "S:\Abteilung\Arbeiten\Mitarbeiter\"
Verzeichnis_Click
If Ordner = "" Then End
End Sub

bleibt immer noch bei der Zeile VerzAnzeige.Caption = .. hangen, habe diese mal als Kommentar gesetzt, anschliessend ist alles i.o., bis halt dann diese "Variable" wieder gebraucht würde.

Was mache ich falsch?
Tut mir Leid, dass ich dich hier so belästige, trotzdem vielen Dank für deine Hilfe!

Gruss kratzbaum

Holger schrieb am 05.02.2008 10:55:44:

Hallo kratzbaum,
VerzAnzeige.Caption wird in Private Sub Verzeichnis_Click() mit dem gewählten Verzeichnis überschrieben. Ursprünglich wollte ich die Variable Start aus VerzAnzeige.Caption lesen, jedoch erlaubt das Makro nicht, übergeordnete Verzeichnisse auszuwählen. Deshalb habe ich hier wieder das Verzeichnis gesetzt, das ich zu Beginn in die VerzAnzeige.Caption geschrieben hatte. Das ist das oberste Verzeichnis, in dem ich nach Bildern suchen lassen wollte.

Wichtiger als die Änderung in VerzAnzeige.Caption ist deshalb eine Änderung der Variablen Start in der Private Sub Verzeichnis_Click(). Hier solltest du das oberste Verzeichnis eintragen, von dem aus der Anwender die Bilder suchen soll. Er kann Unterverzeichnisse auswählen, aber nur bis zu diesem Verzeichnis nach oben zurückspringen. Man könnte das noch eleganter macher, doch ist BrowseForFolder eine bereits fertige Funktion, mit der man durch nachgeordnete Verzeichnisse suchen kann. Warum soll man sie nicht nutzen?
Wenn also "S:\Abteilung\Arbeiten\Mitarbeiter\" das Ausgangsverezichnis sein soll, erste in Private Sub Verzeichnis_Click()
Start = "S:\Abteilung\Arbeiten\Mitarbeiter\"

Ersetze darüber hinaus in der Private Sub ImgText_Click() (im Excel-Objekt deines Formulars)
Image1.Picture = LoadPicture(Ordner)
durch
If LCase(Right(Ordner, 4)) = ".jpg" Then Image1.Picture = LoadPicture(Ordner).
Dadurch wird ein Fehler vermieden, wenn kein Bild ausgewählt wurde.

Viel Erfolg
Holger

kratzbaum schrieb am 05.02.2008 08:04:10:

Hallo Holger

du hattest Recht. mit dem Form gibt es keine Probleme, läuft wirklich was schief bei der Initialisierung.. habe dann mal ein Netzlaufwerk angegeben, aber es funktioniert trotzdem nicht, bzw. bleibt immer hier hangen

VerzAnzeige.Caption = "S:\Abteilung\Arbeiten\Mitarbeiter\"

liegt es daran, dass ich den

+ Application.UserName + _

entfernt habe? sollte nicht soweit ich das beurteilen kann.

Gruss
kratzbaum

Holger schrieb am 04.02.2008 15:05:35:

Hallo kratzbaum,
sehr merkwürdig, denn bei mir funktioniert das Makro.
Welcher Fehler wird an welcher Stelle erzeugt. Die angegebene Markierung heißt nicht unbedingt, dass die UserForm nicht gefunden wird, sondern eventuell auch, dass die Initialisierung schief gegangen ist. Füge in ImgText_Click() als ersten Befehl ein Stop ein und gege mit F8 schrittweise vor, bis sich der Fehler einstellt. Wähle dabei ein Verzeichnis mit nicht zu vielen Bildern aus, weil ja eine entsprechende Schleife durchlaufen wird.
Viel ERfolg
Holger


kratzbaum schrieb am 04.02.2008 07:27:54:

Hallo Holger

Habe gerade alles überprüft, war nichts in Normal.dot gespeichert, alles auf Dokumentenebende (Project).
Zur Sicherheit habe ich die Datei neu erstellt und alles erneut eingefügt, wieder Debuggen bei Load frmBildauswahl :/

Danke für die Hilfe!
kratzbaum

Holger schrieb am 02.02.2008 12:05:40:

Hallo kratzbaum,
Word und Excel verhalten sich unterschiedlich, da man beim Excel-VBA standardmäßig in der Workbook-Ebene landet und beim Word auf der globalen Ebene (Normal.dot)
Ich gehe davon aus, dass du die UserForm in Normal.dot untergebracht hast, die Private Sub ImgText_Click() aber auf Dokumentenebene.
Kopiere alles auf die Dokumentenebene. Denke daran, Public Ordner As String in einem Modul auf Dokumenten-Ebene zu deklarieren. Auch das Modul musst du wahrscheinlich erst einfügen.
Viel Erfolg
Holger





kratzbaum schrieb am 01.02.2008 13:42:43:

hallo Holger

Vielen Dank für deine Antwort!

Bei dem Dokument handelt es sich um ein Word. Ich habe den Code, wie du ihn geschrieben hast eingefügt, aber leider gibt es einen Laufzeitfehler bei Load Bildauswahl.. verstehe nicht ganz wieso.
Mein Steuerelement heisst, wie du richtig bemerkt hast "imgText". trotzdem will es nicht funktionieren.

Gruss
kratzbaum

Holger schrieb am 01.02.2008 11:36:19:

Hallo kratzbaum,
ich gehe davon aus, dass das Ganze sich in Excel abspielen soll.
Aus einem Formular sei das Steuerelement „ImgText“ und dieses Formular sei aktiviert. ImgText sei so formatiert, dass es ausgewählte Bilder auch anzeigen kann. Falls dein Steuerelement anderes heißt, musst du im Code die Namen entsprechend austauschen.
In meinem Vorschlag wird eine UserForm mit dem Namen „Bildauswahl“ mit folgenden Steuerelementen angelegt:
3 CommandButtons mit den Namen: Verzeichnis, Übernahme, Abbrechen
1 Label mit dem Namen: Anzeige
1 ListBox mit dem Namen: ListBox1
1 Image mit dem Namen: Image1.

In irgendeinem echten Modul deklarierst du:
Public Ordner As String

In den Codeteil für das Excel-Objekt deines Formulars kopierst du:
Private Sub ImgText_Click()
Load Bildauswahl
Bildauswahl.Show
ImgText.Picture = LoadPicture(Ordner)
End Sub

In den Codeteil der UserForm kopierst du:
Private Bild() As String

Private Sub Abbrechen_Click()
Unload Bildauswahl
End Sub

Private Sub Übernahme_Click()
Ordner = Bild(ListBox1.ListIndex)
Unload Bildauswahl
End Sub

Private Sub userform_terminate()
Unload Bildauswahl
End Sub

Private Sub Verzeichnis_Click()
Image1.Visible = False
Text = "Bitte Verzeichnis wählen!"
Start = "C:\Dokumente und Einstellungen\" + Application.UserName + _
"\Eigene Dateien\"
Dim objShell As Object
Set objShell = CreateObject("Shell.Application").BrowseForFolder(0&, Text, &H200, Start)
If Not objShell Is Nothing Then Ordner = objShell.Self.Path Else Exit Sub
VerzAnzeige.Caption = Ordner
Set fso = CreateObject("Scripting.FileSystemObject")
Set fldr = fso.getfolder(Ordner)
Set fls = fldr.Files
b = fls.Count
ListBox1.Clear
a = 0
ReDim Bild(a)
If b > 0 Then
For Each d In fls
If LCase(Right(d, 3)) = "jpg" Then
ListBox1.AddItem d.Name
Bild(a) = d
a = a + 1
ReDim Preserve Bild(a)
End If
Next
End If
End Sub

Private Sub ListBox1_Click()
Image1.Visible = True
Image1.Picture = LoadPicture(Bild(ListBox1.ListIndex))
End Sub

Private Sub UserForm_Initialize()
Image1.PictureSizeMode = fmPictureSizeModeZoom
VerzAnzeige.Caption = "C:\Dokumente und Einstellungen\" + Application.UserName + _
"\Eigene Dateien\"
Verzeichnis_Click
If Ordner = "" Then End
End Sub

Viel Erfolg
Holger



kratzbaum schrieb am 01.02.2008 06:57:25:

Guten Tag.

Ich habe folgendes Problem und hoffe, mir kann jemand einen Denkanstoss oder noch besser die Lösung geben.

Als Basis habe ich ein geschütztes Formular welche Image Steuerelemente enthält. Nun soll per Klick (oder beim Öffnen dieses Dokuments) das Bild gewechselt werden. Am Besten wäre es, wenn man durch die Ordnerstruktur klicken könnte um das gewünschte Bild auszuwählen. Da ich aber in diese Richtung noch nichts gefunden habe, versuche ich es mit image.picture = loadpicture

mein code momentan (seehr kurz)

Private Sub imgText_Click()
imgText.Picture = LoadPicture("C:\Files\bild.jpg")
End Sub

nun meine Fragen:

- Kann ich anstelle des absoluten Pfades auf irgendeine Weise das Dokument durch den Benutzer auswählen lassen? (wenn möglich nicht durch Eingabe über ein Userform --> User machen Fehler, vor allem wenn ein Pfad korrekt angegeben werden soll )

- Das Bild wird nach dem Klick nicht automatisch geladen, wenn ich in ein anderes Dokument und zurück wechsle erscheint das Korrekte. Wie refreshed man ein imgSteuerelement? Mit ActiveDocument.Files.Upadate hat's nicht geklappt.

sollte jemand eine elegante Lösung für mein Problem haben bin ich gerne offen für Vorschläge..!

Vielen Dank!

Gruss
kratzbaum

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
01.02.2008 06:57:25 kratzbaum
NotSolved
01.02.2008 11:36:19 Holger
NotSolved
01.02.2008 13:42:43 kratzbaum
NotSolved
02.02.2008 12:05:40 Holger
NotSolved
04.02.2008 07:27:54 kratzbaum
NotSolved
04.02.2008 15:05:35 Holger
NotSolved
05.02.2008 08:04:10 kratzbaum
NotSolved
05.02.2008 10:55:44 Holger
NotSolved
05.02.2008 12:44:34 kratzbaum
NotSolved
Blau Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:Aw:VBA image.picture = loa
05.02.2008 13:11:43 Holger
NotSolved
06.02.2008 11:13:58 kratzbaum
NotSolved
06.02.2008 11:33:01 kratzbaum
NotSolved
06.02.2008 11:44:59 Holger
NotSolved