Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
896to900
896to900
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nach Start Anpassung vornehmen...

Nach Start Anpassung vornehmen...
15.08.2007 00:07:13
Uwe
Hallo an Alle,
ist es möglich das wenn man eine Datei startet, sowas wie ein Explorer aufgeht...man einen Ordner auswählen kann... und diese Pfadangabe dann zum Beispiel in einem Code zu ersetzen.
Geht sowas überhaupt und wie müsste der Code für sowas aussehen ?
Hintergrund ist folgender.....
zb. hab ich in Userform5 einige Images die mit folgendem Code ausgestattet sind....
Private Sub UserForm_Activate()
If Sheets(1).Cells(39, 14) = " " Then
Image1.Picture = Nothing
Else: Image1.Picture = LoadPicture("W:\Test\BILDER\" & Sheets(1).Cells(39, 14) & ".jpg")
End If
If Sheets(1).Cells(40, 14) = " " Then
Image2.Picture = Nothing
Else: Image2.Picture = LoadPicture("W:\Test\BILDER\" & Sheets(1).Cells(40, 14) & ".jpg")
End If
If Sheets(1).Cells(41, 14) = " " Then
Image3.Picture = Nothing
Else: Image3.Picture = LoadPicture("W:\Test\BILDER\" & Sheets(1).Cells(41, 14) & ".jpg")
End If
...u.s.w.
jetzt sollte folgendes im Code ersetzt werden, da sich der Ort geändert hat. ("C:\Testumgebung\Test\BILDER\"..........
Vielleicht sowas wie suchen und ersetzen als Code?
Vorab schon mal vielen Dank für die Mühen!
Gruß Uwe

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach Start Anpassung vornehmen...
15.08.2007 00:24:00
Oberschlumpf
Hi Uwe
Wenn es nur darum geht, dass du deinen Code korrigierst, weol der Pfad sich änderte, und wenn diese Änderung so scnell nicht wieder geändert werden muss, dann arbeite doch im VBE mit der Suchen/Ersetzen-Methode.
Klick auf Bearbeiten/Ersetzen...
Gib in Suchen nach: den Text W:\Test\BILDER ein
Gib in Ersetzen durch: den Text C:\Testumgebung\Test\BILDER ein
Wähle in Suchen in... die Option ...aktuellem Projekt aus
Klick auf Ersetzen....dann wirst du bei jedem Fund gefragt, ob wirklich ersetzen
oder
Klick auf Alle Ersetzen...dann werden alle Fundstellen ohne Rückfrage ersetzt - bei dieser Wahl solltest du aber sicher sein, dass wirkich alle Fundstellen erstzt werden sollen.
Hilft das?
Ciao
Thorsten

Anzeige
AW: Nach Start Anpassung vornehmen...
15.08.2007 00:40:02
Uwe
Hi Thorsten,
deinen Vorschlag hab ich bis jetzt immer benutzt.
Da ich die Datei auf verschiedenen Rechnern benutze wechselt halt immer wieder die Pfadangabe.
Dachte es wäre schöner wenn halt beim Start eine Auswahl getroffen werden kann, und dann der Pfad entsprechend automatisch überall ersetzt wird.
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
15.08.2007 09:06:00
Oberschlumpf
Hi Uwe
Dann versuch mal so:
https://www.herber.de/bbs/user/45080.xls
Trag in die entsprechenden Zellen deine JPG-Dateinamen ein und teste.
(die Ordnerauswahl erfolgt in der Testdatei bei jedem Zellenwechsel, also erst Ordner auswählen, nachdem alle JPG-Dateien eingetragen wurden)
Wenn alles so funzt, wie gewollt, übertrage den Code aus diesem Bsp an genau die gleichen Stellen in deine Datei.
Die Ordnerauswahl wird dann bei dir IMMER zuerst aufgerufen, und dann kommt dein Code.
Hilft das?
Ciao
Thorsten

Anzeige
AW: Nach Start Anpassung vornehmen...
15.08.2007 21:56:58
Uwe
Hallo Thorsten,
bin deinen Code mal am umsetzen und es funktioniert soweit, wenn die Cellen mit dem Bildnamen schon gefüllt sind.
Jedoch müssten die Cellen am Anfang ja leer sein.
Wenn ich das mache bekomme ich einen Debugfehler und folgende Zeile wird markiert....
Image1.Picture = LoadPicture(lstrPfad & "\" & Sheets(1).Cells(39, 14) & ".jpg")
kann da was angepasst werden?
Denn so sieht das schon gut aus!
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
15.08.2007 23:00:00
das
Hi Uwe
Ich hatte DEINEN Code nicht weiter geprüft.
diese Zeilen

If Sheets(1).Cells(39, 14) = " " Then


musst du ändern in


If Sheets(1).Cells(39, 14) = "" Then


Wenn JETZT in den Zellen nichts eingetragen ist, kommt auch keine Fehlermeldung mehr.
Wenn aber etwas in den Zellen drin steht, DANN muss der Eintrag auch korrekt sein, also es muss ein JPG-Dateiname drinstehen, der auch im ausgewählten Verzeichnis vorhanden ist - sonst wieder Fehler.
Funktioniert es nun mit der obigen Korrektur?
Ciao
Thorsten

Anzeige
AW: Nach Start Anpassung vornehmen...
16.08.2007 00:45:18
Uwe
Hallo Thorsten,
jetzt hab ich mal alles eingebaut....und..... es läuft wie gewünscht.... Super!!!
..hatte einen Fehler im Modul mit übertragen.
da kann ich nur sagen
Vielen Dank für die Hilfe!!!
Jetzt versuch ich das mal in meine Auswahl Buttons umzusetzen die ja die Zellen noch füllen müssen.
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
16.08.2007 01:36:00
Uwe
Hi Thorsten,
hoffe ich darf dich nochmal um Hilfe bei einer Ergänzgung bitte.
Dachte ich könnte das vorran gegangene in meine Auswahlbuttons umsetzen.... aber da ist wohl mein Wissen wieder mal zu gering für.
Folgendes hab ich für 20 Buttons von 2-21.
Button 2 hat folgenden Code

Private Sub CommandButton2_Click()
Dim fn
ChDrive "W:\"
ChDir "W:\Test\BILDER"
fn = Application.GetOpenFilename(FileFilter:="Alle Grafiken,*.jpg", Title:="Bitte Datei auswä _
hlen")
If fn = False Then
MsgBox "Benutzerabbruch"
Exit Sub
End If
Range("A800") = fn
End Sub


.... ist es möglich hier schon eine Pfadvorauswahl zu treffen und die in alle andere Buttons mit zu übertragen....denke das wäre hier das Größte...ansonsten einzeln pro Button ist auch super.
Hättest Du für sowas auch ne Lösung?
Gruß Uwe

Anzeige
AW: Nach Start Anpassung vornehmen...
16.08.2007 04:40:00
das
Hi Uwe
Wenn du meinst, dass du vermeiden möchtest, für JEDEN Button den gleichen Code wie für Button 2 schreiben zu müssen, dann versuch es mal so.
Schreib dieses Makro in ein allgemeines Modul:

Sub PfadWahl()
Dim fn
ChDrive "W:\"
ChDir "W:\Test\BILDER"
fn = Application.GetOpenFilename(FileFilter:="Alle Grafiken,*.jpg", Title:="Bitte Datei auswä _
hlen")
If fn = False Then
MsgBox "Benutzerabbruch"
Exit Sub
End If
Range("A800") = fn
End Sub


Und für jeden Button - hier als Bsp nur für Button 2 - schreibst du diesen Code


Private Sub CommandButton2_Click()
PfadWahl
End Sub


Die eine Zeile PfadWahl muss zwar für jeden Button eingetragen werden, aber 1 Zeile schreiben ist einfacher, als immer wieder 10 oder mehr die selben Zeilen, oder?
Hilft das?
Ciao
Thorsten

Anzeige
AW: Nach Start Anpassung vornehmen...
16.08.2007 07:21:00
Uwe
Guten Morgen,
bitte nicht böse werden, aber ich hab wohl nicht mitgeteilt das im Code das
Range("A800")~f~
sich für jeden Button ändert. Also für Button 3 wäre es ja dann "A801".
So wie der Code ja jetzt ist geht er ja direkt in den Debugmodus da ja das Laufwerk und Pfad nicht mehr stimmt.
Hab mir da gedacht man kann es wie bei den Images machen. ~f~
Öffnen>Pfad auswählen>Code weiterausführen>>>und als Sahnestück eine entsprechende Änderung für die Pfadauswahl der restlichen Buttons.
Hoffe ich hab es einigermaßen erklären können.
Vielleicht geht es ja wie mit Verknüpfungen. Da geht ja auch direkt beim öffnen der Datei die Pfadauswahl für die Verknüpfungen auf, und er passt die entsprechend nach der Auswahl an?!
Gruß Uwe

Anzeige
AW: Nach Start Anpassung vornehmen...
16.08.2007 10:01:00
das
HI
Du hast weder was davon erzählt, dass die Zielzelle sich ändert (A800), noch hast du bisher was von 20 Button erzählt, für die der Pfad stimmen muss.
Nach meinen bisherigen Überlegungen stimmt so nun mein Code zum Teil nicht mehr, da er nur auf die JPG-Image-Auswahl ausgerichtet ist.
Was bezahlst du mir nun dafür, dass ich nicht nur gratis, sondern auch umsonst gearbeitet habe?
(auf die Antwort bin ich neugierig)
Versuch es mit dieser Bsp-Datei und korrigiere deine entsprechend.
https://www.herber.de/bbs/user/45114.xls
Hilft das?
Ciao
Thorsten

Anzeige
AW: Nach Start Anpassung vornehmen...
16.08.2007 11:25:00
Uwe
Hi Thorsten,
nochmals Sorry!!!!
Bin halt nur ein Handwerker der ein neues Hobby gefunden hat und sich dabei oft zu blöd anstellt :-)
Aber dieses Forum verlockt natürlich zur Selbstüberschätzung bei Menschen wie mir. Die Informationen sind hier so groß das ich mir viel mehr Freizeit wünschen würde. (oder halt so Leute wie Dich die einen mal in die richtige Richtung lenken.)
Deine Beschwerde nehm ich sehr ernst!!!
Weil ich mir in etwa denken kann wieviel Mühe das macht!
Zur Bezahlung.......
Handwerker haben kein Geld!!!! Aber manchmal Talent!!!! Also wenn Du ein Auto oder ein Flugzeug hast, kann ich helfen :-)
Hoffe die Entschuldigung ist angenommen?
Deine Datei werd ich aber erst heut Abend mal einbauen können. Info folgt!
Gruß Uwe

Anzeige
AW: Nach Start Anpassung vornehmen...
17.08.2007 19:31:03
Oberschlumpf
Hi Uwe
Na, läufts denn nun oder nich? :-)
Ciao
Thorsten

AW: Nach Start Anpassung vornehmen...
17.08.2007 22:45:12
Uwe
Hi Thorsten,
so nun hab ich es soweit mal versucht einzubauen.
Bei der Testmappe läuft es soweit.
Jedoch wenn man das Bild nochmals wechseln will aktualisiert das Image nicht. Erst wenn das UF geschlossen und wieder geöffnet wird.
Eingebaut in meine Testumgebung gibt es beim öffnen der UF bereits einen Kompelierfehler und er markiert im Code "Get Directory" als mehrdeutiger Name...da muß ich noch was nachhaken.
Bin leider was spät von der Arbeit gekommen....da fehlts sicher auch was an der Konzentration.
halte Dich auf dem laufenden.
Gruß Uwe
P.s: hoffen die Entschuldigung ist richtig angekommen!(ist wichtig)

Anzeige
AW: Nach Start Anpassung vornehmen...
18.08.2007 00:18:00
Oberschlumpf
Hi Uwe
Oki, dann wart ich auf deine weiteren Ergebnisse.
Und was dein Sorry betrifft...ja, ich hab verstanden, was du sagen möchtest...und...ich denke, dass ich auch verstanden habe, dass ich manchmal vllt ein wenig zu viel erwarte.
Auch wenn hier manchmal "umsonst" eine Lösung angeboten wird, weil die Fragestellung nicht präzise genug war, muss es nicht daran liegen, dass der Fragende vorher nicht genug überlegte, sondern dass dem Fragenden erst durch die gelieferten "Teillösungen" dir richtige Frage einfällt - ich muss mich also ein wenig mehr in Geduld üben.
Also auch von mir ein Sorry.
Ciao
Thorsten

AW: Nach Start Anpassung vornehmen...
18.08.2007 19:35:00
Uwe
Hallo Thorsten,
so nun hab ich mal an der Testmappe von Dir gebastelt und es läuft natürlich echt super.
Jedoch ändert er die Bildauswahl nicht sofort wenn man nochmals die Auswahl verändert, erst wenn die Userform neu gestartet wird.
Hab versucht mit dem Iniziale der Userform zu experimentieren....aber wie vermutet....wissen ist zu klein dafür:-)
Dennoch hab ich mal versucht es in meine Userform zu übertragen. Leider bekomm ich da sofort einen Fehler kompilierung mehrdeutiger Name........
Private Sub UserForm_Activate()
On Error GoTo ErrHandling
Dim strMessage As String
strMessage = "Wählen Sie bitte einen Ordner aus:"
>>> pstrPfad = GetDirectory(strMessage) If pstrPfad = "" Then MsgBox "Abbruch": Exit Sub
If Sheets(1).Cells(39, 14) = "" Then
Image1.Picture = Nothing
Else
Image1.Picture = LoadPicture(pstrPfad & "\" & Sheets(1).Cells(39, 14) & ".jpg")
End If
......
bei beiden Fällen komm ich nicht weiter.
Beil letzterem Fehler find ich den Zusammenhang der mehrdeutigkeit nicht auf anhieb.
Vielleicht kannst Du mir da noch was unter die Arme greifen.
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
18.08.2007 22:05:06
Oberschlumpf
Hi Uwe
mehrdeutiger Name deutet darauf hin, dass der Begriff
GetDirectory
mehrmals in deinem Code verwendet wurde.
als Function-Name (wie es sein soll)
und vllt als
Name einer Sub und/oder einer Variablen, oder du hast die Function GetDirectory mehrfach in deinen Code eingefügt.
Die Function darf nur einmal im Code vorkommen - und der Name darf eben auch nicht für andere Teile verwendet werden.
Verwende die Such-Funktion im VBE (STRG+F) und entferne alle doppelten Einträge von GetDirectory.
Aber insgesamt am Besten ist es, wenn du deine Datei mal uploadest - inklusive ALLER Erklärungen, dich ich benötige, um den Code SO anzupassen, dass ALLES so funzt, wie du es haben willst.
Denn ich verstehe so noch nicht den Zusammenhang zwischen den Button und den Images in deinem Userform.
Ciao
Thorsten
p.s. Wenn ein Upload deiner Originaldatei aus datenschutzrechtlichen Gründen nicht möglich ist, oder die Datei für den Upload zu groß ist, dann erstell eine Bsp-Datei mit zwar weniger und Bsp-Inhalten, aber genug Inhalten, dass dein Prob nachvollziehbar ist.
Ich befürchte, wenn wir so weiter machen, wie bisher, dann werden wir noch ewig an deiner Datei "rumbasteln".

AW: Nach Start Anpassung vornehmen...
19.08.2007 02:45:00
Uwe
Hi Thorsten,
also manchmal könnt ich mich selbst beißen.
Ich hatte das Modul zweimal eingebaut...deshalb der Fehler.
Also es läuft doch soweit prima!
Hab aber dann doch noch 2 Frage :-)
Wenn man die Pfadauswahl abbricht und dann dennoch den Button zur Bildauswahl drückt, geht er in den Debugmodus und sagt Pfad nicht gefunden und markiert......
Sub PfadWahl(ByVal cmdindex As Integer)
Dim fn
ChDrive Left(pstrPfad, 3)
-----ChDir pstrPfad-------wird als Fehler markiert
fn = Application.GetOpenFilename(FileFilter:="Alle Grafiken,*.jpg", Title:="Bitte Datei auswählen ")
If fn = False Then
MsgBox "Benutzerabbruch"
Exit Sub
End If
Select Case cmdindex
Case 1
Range("A800") = fn
Case 2
Range("A801") = fn
Case 3
Range("A802") = fn
'case...so lange weiter wie nötig
End Select
..........
hab das unterbunden in den die Userform geschlossen wird.
Private Sub UserForm_Activate()
On Error GoTo ErrHandling
Dim strMessage As String
strMessage = "Wählen Sie bitte einen Ordner aus:"
pstrPfad = GetDirectory(strMessage)
If pstrPfad = "" Then UserForm1.Hide
If pstrPfad = "" Then MsgBox "Ordner muß ausgewählt werden!!Fenster wurde geschlossen!!Versuchen Sie es erneut!!": Exit Sub
.............
ist die Lösung so gut, oder sollte man das anders machen?
2. Frage wäre...wie kann man die Images sofort aktualisieren, wenn man die Bildauswahl noch mal ändert ohne die UF zu schließen? Das was ich versucht habe ist leider alles gescheitert.
Gruß Uwe
P.S.: Datenschutzrechtlich ist bei mir nix (glaub ich) nur ist mein jetzt schon so lange gebasteltes Teil über 30 MB groß geworden und total verwirrend. Ich glaub Dir würden die Haare zu Berge stehen :-)

AW: Nach Start Anpassung vornehmen...
19.08.2007 09:27:14
Oberschlumpf
Hi Uwe
Ich würde deinen Code so ändern:

If pstrPfad = "" Then
MsgBox "Ordner muß ausgewählt werden!!Fenster wurde geschlossen!!Versuchen Sie es erneut!!"
U n l o a d UserForm1 'schreib Unload ohne Leerzeichen - dient hier nur der  _
Verdeutlichung
End If


Diese Variante ist "sauberer", da beim Unload alle Variablen zurückgesetzt werden. Wenn mit .Hide das Userform(ular) wieder "neu gestartet" wird, und eine Variable nicht den "richtigen" Wert hat, kann das zu Problemen führen.
Zu 2.
1. Füge deinem Userform einen weiteren Button hinzu
2. Füg den gesamten Code aus UserForm_Activate ins Klick-Ereignis des neuen Buttons ein und lösche den Code aus UserForm_Activate.
So wird der Ordnerauswahl-Dialog zwar nicht mehr direkt nach Starten des Userforms angezeigt, aber so kannst du bei Bedarf durch Klick auf den neuen Button immer wieder auf's Neue einen beliebigen Ordner auswählen.
Hilft das?
Ciao
Thorsten

AW: Nach Start Anpassung vornehmen...
19.08.2007 14:31:17
Uwe
Hi Thorsten,
soweit prima!
Die erste Lösung von Dir im Aktivate der Userform ist schon vom Ablauf das perfektere!
Besteht die möglichkeit vielleicht über einen zusätzlichen Button nur die Images zu aktualisieren.
Wenn man dann doch ein anderes Bild aus dem Ordner haben möchte, wäre es schön das auch sofort angezeigt zu bekommen.
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
19.08.2007 15:52:42
Oberschlumpf
Hi Uwe
Schreib ins Klick-Ereignis des neuen Buttons diesen Code:

If Sheets(1).Cells(39, 14) = "" Then
Image1.Picture = Nothing
Else
Image1.Picture = LoadPicture(pstrPfad & "\" & Sheets(1).Cells(39, 14) & ".jpg")
End If
If Sheets(1).Cells(40, 14) = "" Then
Image2.Picture = Nothing
Else
Image2.Picture = LoadPicture(pstrPfad & "\" & Sheets(1).Cells(40, 14) & ".jpg")
End If
If Sheets(1).Cells(41, 14) = "" Then
Image3.Picture = Nothing
Else
Image3.Picture = LoadPicture(pstrPfad & "\" & Sheets(1).Cells(41, 14) & ".jpg")
End If


Hilfts?
Ciao
Thorsten

AW: Nach Start Anpassung vornehmen...
19.08.2007 16:33:00
Uwe
....
Super! So ist das ein schöner Kompromiss. Und funktioniert prima.
Denke das eine automatische akualisierung für die Images zu aufwendig ist.
Hiermit läuft es super.
Lange Geburt ..gut Lösung.
Da kann ich nur noch sagen.... Vielen Dank für die Mühen und Deiner Geduld!!
Wünsch noch einen schönen Restsonntag
Gruß Uwe

AW: Nach Start Anpassung vornehmen...
15.08.2007 07:34:26
ede
guten morgen uwe,
dann frag doch nacheinander die verzeichnisse ab!
Private Sub UserForm_Activate()
'path suchen
if len(dir("W:\Test\BILDER\" & Sheets(1).Cells(39, 14)))>0 then strpath="W:\Test\BILDER\"
if len(dir("C:\Testumgebung\Test\BILDER\" & Sheets(1).Cells(39, 14)))>0 then strpath="C:\Testumgebung\Test\BILDER\"
'bilder laden
If Sheets(1).Cells(39, 14) = " " Then
Image1.Picture = Nothing
Else: Image1.Picture = LoadPicture(strpath & Sheets(1).Cells(39, 14) & ".jpg")
End If
If Sheets(1).Cells(40, 14) = " " Then
Image2.Picture = Nothing
Else: Image2.Picture = LoadPicture(strpath & Sheets(1).Cells(40, 14) & ".jpg")
End If
If Sheets(1).Cells(41, 14) = " " Then
Image3.Picture = Nothing
Else: Image3.Picture = LoadPicture(strpath & Sheets(1).Cells(41, 14) & ".jpg")
End If
gruss

AW: Nach Start Anpassung vornehmen...
16.08.2007 01:39:30
Uwe
Hi Ede,
leider hat Dein Vorschlag bei mir nicht funktioniert.
Trotzdem vielen Dank für die Hilfe!!!
Gruß Uwe

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige