Anzeige
Archiv - Navigation
344to348
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
344to348
344to348
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Mit Makro Makropfade ändern

Mit Makro Makropfade ändern
05.12.2003 01:27:24
Jens
Hallo Zusammen

Ich habe eine generelle Frage.

Kann man mit einer Schaltfläche, bei der ein Makro hinterlegt ist, andere Makros ändern.

Und zwar öffnen meine anderen Schaltflächen Dateien, Explorer und Programme.
Es sind aber feste Pfade hinterlegt, die sich auf eine Abteilung beziehen.

zb. D:\Mitte\VKD Mitte\Daten\Datei.xls

Jetzt soll über eine Schaltfläche, immer wenn in den anderen Makros "Mitte\VKD Mitte" gefunden wird, dieses "Mitte\VKD Mitte" in "Süd\VKD Süd" umbenannt werden.

Der Rest soll aber bleiben.

Also soll aus
D:\Mitte\VKD Mitte\Daten\Datei.xls
dann
D:\Süd\VKD Süd\Daten\Datei.xls
werden.

Geht das und wenn ja wie macht man so was.

Ich wäre dankbar für jeden Tip und vor allem Erklärungen die man, als nicht Spezi, auch versteht.

Gruß Jens

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Mit Makro Makropfade ändern
05.12.2003 06:25:41
Christoph Dümmen
Hallo Jens,

ja, man kann die Pfade ändern. Aber hier ist absolute Vorsicht geboten. Da mußt Du nämlich einige Sicherheitsmechanismen einbauen, damit z. B. diese Änderung nur einmal ausgeführt werden kann. Außerdem darf nur eine Version der Makros existieren. Ansonsten kann es nämlich sein, dass Dein Pfad in unterschiedlichen Zeilen der Makros steht.
Es gibt viele Beispiele hier auf der Seite, wenn Du ein Wenig recherchierst. Suche nach VBProject.
Dort findest Du z. B.
https://www.herber.de/forum/archiv/20to24/t21672.htm

Viel Erfolg.
Christoph
Anzeige
Alternative
05.12.2003 08:26:06
Franz W.
Hallo Jens,

leg Dir doch ein Hilfsblatt an (das kannst Du ausblenden mit Format - Blatt - ausblenden) und trage dort die verschiedenen Pfade ein. Lies die Pfade dann in eine Variable ein und nimm den richtigen je nach Bedingung

Variablen:
TestPfad1 = Worksheets("Help").[A1]
TestPfad2 = Worksheets("Help").[A2]

Und jetzt eine If-Abfrage:

If DeineBedingung Then
TestPfad1
Else
TestPfad2
End If

Vielleicht hilft Dir das weiter. Damit musst Du nicht in die Makros eingreifen, weil sehr riskant, s. Christoph

Grüße
Franz
Anzeige
AW: Alternative
05.12.2003 10:24:41
Jens
Hallo Franz

Ertsmal vielen Dank.

Auch an Dich die Bitte. Könntest Dur mir mal eine Testdatei zur Verfügung stellen, damit ich ungefähr nachvollziehen kann wie Du das meinst. Ich bin mit diesen VBA Geschichten nicht ganz so Firm. Aber vielleicht kann ich mir nach solch einer Testdatei einen Reim darauf machen, wie ich es anstellen kann um an mein Ziel zu gelangen.

Ich danke Euch für die wertvollen Hilfen.

Gruß Jens
AW: Alternative
05.12.2003 16:52:19
Franz W.
Hallo Jens,

sorry,d ass ich so spät antworte, aber ich war den ganzen Tag weg.

Du schreibst:
- immer wenn in den anderen Makros "Mitte\VKD Mitte" gefunden wird...

In welcher Form steht denn das "Mitte\VKD Mitte" in den Makros? In welcher Anweisung oder Variablen oder ... findet man das?

Schreib mir das mal, vielleicht kann ich Dir dann was basteln?

Grüße
Franz
Anzeige
AW: Alternative
05.12.2003 17:54:31
Jens
Hallo Franz

Kein Problem mit Deiner Abwesenheit.

Also, alle Schaltflächen die ich benutze öffnen entweder eine Wordvorlage, oder eine Excelvorlage, oder den Explorer.

Hier mal ein paar Beispiele.

Hier wird z.B. ein Worddokument geöffnet


Sub Schaltfläche8_BeiKlick()
Dim stAppName As String
stAppName = "C:\Programme\Microsoft Office\Office\winword.exe \\FILE1\AbtT100-Bereich\AbtT103\Mitte\VKD-Mitte\Meldungen\Meldungen_Betrieblich\01_Vorlagen\Vorlage_Betriebl_Meldung.doc"
Call Shell(stAppName, 1)
End Sub


Hier wird eine Excelvorlage geöffnet


Sub Schaltfläche37_BeiKlick()
ChDir "\\FILE1\AbtT100-Bereich\AbtT103\Mitte\VKD-Mitte\Überstundenzettel"
Workbooks.Open FileName:= _
"\\FILE1\AbtT100-Bereich\AbtT103\Mitte\VKD-Mitte\Überstundenzettel\01_Vorlagen\Überstundenzettel.xls"
End Sub


Hier wird der Explorer geöffnet


Sub Schaltfläche74_BeiKlick()
Dim stAppName As String
Dim gDir As String
gDir = "\\FILE1\AbtT100-Bereich\AbtT103\Mitte\VKD-Mitte\Meldungen\"
stAppName = "EXPLORER.EXE /e," & gDir
'DoCmd.Maximize
Call Shell(stAppName, 1)
End Sub


Von diesen Schaltflächen gibt es auf meiner Oberfläche ungefähr 35 Stück. Alle haben erst mal den gleichen Zweck, nämlich Vorlagen zu öffnen.
Wenn Du Dir die Pfade für die zu öffnende Vorlage anschaust, wirst Du merken, das in jedem Pfad eben \Mitte\VKD-Mitte\ erscheint.

Der Grund ist, dass die hier im angebenen Beispiele stammenden Schaltflächen von der Oberfläche des VKD Mitte stammen. Da dieser VKD Mitte im Netzwerk unserer Firma auch nur diese Ordner Zugriff hat.

Jetzt gibt es aber bei uns 4 VKD Bereiche. Den VKD Mitte, den VKD Süd, den VKD Nord und den VKD West. Und alle haben von mir die gleichen Ordner angelegt bekommen und beutzen die gleiche Oberfläche. Allerdings benutzen nicht alle VKDs die Oberfläche zur gleichen Zeit, sonder jeder VKD und hat seine Eigene, eben wegen der festgelegten Zugriffsrechte.

Ich möchte aber auch mal als Entwickler und Pfleger dieser Oberfläche (hier ist noch ein Kalender usw. hinterlegt) die Möglichkeit haben, mal was zu Verändern oder zu Verbessern.
Das ist ja eigentlich kein Problem.
Nur muß ich dann jede Oberfläche wieder seperat den VKD Bereichen anpassen und alle 35 Schaltfläche bzw. deren Makros umschreiben, damit da auch die Schaltflächen funktionieren.

Was ich jetzt brauche wäre ein Schaltfläche, oder vier Schaltflächen, die auf Klick aus dem VKD Mitte ein VKD Süd etc macht/machen.

Eigentlich reicht es auch wenn ich über die Schaltfläche sagen kann suche in allen Makros das Wort "Mitte" und ersetze das Mitte durch Süd, West oder Nord.

Denn eigentlich braucht das Makro ja wirklich nur das Wort "Mitte" "Süd" "Nord" oder "West" zu suchen, je nach dem wie die Oberfläche gerade eingestellt ist und mir dann die Möglichkeit bieten, diese vier Wörter beliebig auszutauschen.

Ich hoffe ich habe mich hallwegs verständlich ausgedrückt.

Ansonsten frag einfach nochmal nach.

Danke für Deine Unterstützung.

Gruß Jens
Anzeige
AW: Alternative
05.12.2003 21:23:25
Franz W.
Hallo Jens,

hab ich Dich richtig verstanden, dass Du derjenige bist, der die Dateien erstellt und somit auch Du derjenige bist, der die Makros reinschreibt um die es gerade geht? Dann bau doch in alle Dateien noch was ein.

Schau Dir mal folgendes an: ich schreibe ein paar Excel-Programme für einen Freund. Er hat seine Vorlagedateien in einem anderen Ordner als ich. Und da ich keine Lust habe, jedes mal beim Hin- und Herschicken der Dateien im Code entweder seine oder meine Pfade einzutragen (was ich dann vielleicht zu allem Überfluss auch noch vergesse), habe ich sowas wie eine "automatische PC-Erkennung" gebastelt: ich lasse beim Öffnen der Datei in Workbook_Open nach einem eindeutigen Kriterium auf seinem bzw. Rechner suchen, und schreibe dementsprechend in ein ausgeblendetes Hilfsblatt die entsprechenden PFade ein:


Private Sub Workbook_Open()
Call ChPC
End Sub


Sub ChPC()
Dim VorlEH$
Dim FSo
VorlEH = Worksheets("Help").[C20]
Set FSo = CreateObject("Scripting.FileSystemObject")
If Not FSo.FileExists(VorlEH) Then
With Worksheets("Help")
If .[C17] = "Bernhard" Then
.[C17] = "Franz"
.Cells(18, 3) = _
"E:\Microsoft\Winword\Vorlagen\Smiley.jpg"
.Cells(20, 3) = _
"E:\Microsoft\Winword\Vorlagen\EH_ReVorlage.xlt"
.Cells(22, 3) = _
"E:\Microsoft\Winword\Vorlagen\EN_ReVorlage.xlt"
.Cells(24, 3) = _
"E:\Microsoft\Winword\Vorlagen\EN_ReVorlageFS.xlt"
Else
.[C17] = "Bernhard"
.Cells(18, 3) = _
"C:\Dokumente und Einstellungen\bernhard\Anwendungsdaten\Microsoft\Vorlagen\Smiley.jpg"
.Cells(20, 3) = _
"C:\Dokumente und Einstellungen\bernhard\Anwendungsdaten\Microsoft\Vorlagen\EH_ReVorlage.xlt"
.Cells(22, 3) = _
"C:\Dokumente und Einstellungen\bernhard\Anwendungsdaten\Microsoft\Vorlagen\EN_ReVorlage.xlt"
.Cells(24, 3) = _
"C:\Dokumente und Einstellungen\bernhard\Anwendungsdaten\Microsoft\Vorlagen\EN_ReVorlageFS.xlt"
End If
End With
End If
End Sub


Die Pfade passt Du denen bei Dir an.

Und bei Deinen Makros holst Du die jetzt den im Blatt Help stehenden Code aus der entsprechenden Zelle in eine Variable und arbeitest dann mit dieser Variablen:

Sub Schaltfläche37_BeiKlick()
Dim TestPfad as String
TestPfad = Worksheets("Help").[C20]

ChDir TestPfad
Workbooks.Open FileName:= _
TestPfad & "\01_Vorlagen\Überstundenzettel.xls"

End Sub


Schau doch mal ob Dir die Idee weiterhilft. Vielleicht kannst Du das ja Deinen Bedürfnissen entsprechend ummodeln. Ich helf Dir gern noch mal weiter wenn ich kann...

Viel Glück und beste Grüße
Franz
Anzeige
AW: Alternative
05.12.2003 21:34:25
Jens
Hallo Franz

bevor ich mich da richtig reinkniehe (und das werde ich)um das alles zu verstehen, kannst Du mir nicht mal eine test Datei zukommen lassen. An Hand solch einer Datei lässt sich vieles einfacher verstehn.

Sei so nett

Gruß Jens
Schon war erreicht?
06.12.2003 10:42:56
Franz W.
Guten Morgen Jens,

hast Du schon was eingearbeitet. Bringt ja nix, wenn ich extra eine Beispieldatei aufbauen muss, in der nur dasselbe drin steht, wie oben. So ein PRofi bin ich auch nicht, dass ich das schnell mal in 1 1/2 Minuten aus dem Ärmel schüttel. Und ich kämpf ja auch mit meinen eigenen Sachen rum ;-)). Aber so schwer ist es eigentlich nicht. Wenn Du noch Detailfragen hast, versuche ich mich gerne noch mal damit.

Grüße
Franz
Anzeige
AW: Alternative
06.12.2003 22:29:23
Jens
Hallo Franz

Tut mir leid. Ich habe den ganzen Nachmittag rumexperimentiert. Kein Erfolg. Ich bekomme ständig die Meldung. Laufzeitfehler 76 "Pfad nicht gefunden"

Beim Debuggen wird mir dann die Zeile "ChDir TestPfad" als Fehler angezeigt.

Ich bekomm hier nen Fön.

Ich habe die Codes nach meinem Wissensstand eingefügt, habe ein Blatt mit Help erstellt und habe dort z.B. in Zelle C20 den Pfad D:\Daten\Excel\Adressen.xls eingefügt, da ich ja erst mal bei mir zu Hause experimentiere.

Keine Erkennung des Pfades.

Was mach ich dennn nun falsch.

Vielleicht könntest Du mir noch mal im Einzelnen erläutern wo ich nun was genau einfügen muß, was ich erstellen muß und wie oder über was ich welchen Code aktiviere.

Ich kann nur sagen, wenn Du mich dahin bekommst, dass ich das verstehe, bist Du ein Held.

Gruß Jens
Anzeige
AW: Alternative
06.12.2003 23:16:00
Franz W
Hallo Jens,

dann poste doch mal den Code, mit dem Du es jetzt versuchst, dann versuche ich das bei mir nachzubauen, und dann werden wir den Fehler schon finden. Wenn nicht holen wir uns noch Hilfe aus dem Forum

Grüße
Franz
AW: Alternative
07.12.2003 20:00:24
Jens
Hallo Franz

Ich habe Dir einfach mal die Testdatei mit eingefügt.

Ich hoffe Du bekommst keinen Lachkrampf. Wie schon gesagt, VBA ist nicht meine Stärke.
Vielleicht kannst Du was drehen.

Gruß Jens
AW: Alternative
07.12.2003 20:05:57
Jens
Hallo Franz

Ich habe Dir einfach mal die Testdatei mit eingefügt.
https://www.herber.de/bbs/user/2360.xls
Ich hoffe Du bekommst keinen Lachkrampf. Wie schon gesagt, VBA ist nicht meine Stärke.
Vielleicht kannst Du was drehen.

Gruß Jens
Anzeige
AW: Alternative
08.12.2003 09:36:11
Franz W.
Hallo Jens,

tut mir leid, aber vielleicht bin ich dohc nicht der Richtige für Dein Problem. In jedem Fall hab ich den Überblick verloren. Wenn Du magst, dann versuch doch ncoh mal, möglichst klar zu beschreiben, worum es geht, dann mach ich mich noch mal dran.

Grüße
Franz
AW: Alternative
08.12.2003 10:11:24
Jens
Hallo Franz

Das ist doch glaube ich nicht so schwer.

Ich öffne mit einer Schaltfläche ein Vorlage.

Die Vorlage ist aber unter 4 verschieden Pfaden zu erreichen. Wobei jeder VKD immer nur einen Pfad zur Verfügung hat, da er auf die anderen Pfade kein Zugriff hat.
Die Pfade selbst bleiben gleich, bis auf den Bereich.

einmal unter:
G:\AbtT103\Mitte\VKD-Mitte\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\Süd\VKD-Süd\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\West\VKD-West\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\Nord\VKD-Nord\Vorlage\Meldung.xls

Ich möchte nur einen Automatismus der sich den richtigen Pfad selbst sucht und die Vorlage öffnet.

Ist doch wirklich nicht schwer zu verstehen.

Gruß Jens
Anzeige
AW: Alternative
08.12.2003 11:18:40
Franz W.
Hallo Jens,

vielleicht lassen wir mal die Anspielungen auf des Einzelnen Intelligenz weg. Ich sag ja auch, dass mein Lösungsvorschlag doch wirklich nicht so schwer zu verstehen ist!!! :-))) Und wenn sich das nun schon über mehrere Tage hinzieht, kann man doch mal den Anschluss verlieren, oder ?!? Außerdem bin ich nicht der Vollprofi und kämpfe so nebenbei auch noch mit meinen eigenen Sachen rum.

Zum Thema: hab das jetzt mal nachgebaut und getestet und Die eine Beispieldatei hochgeladen. Die Leerzeilen zwischen den einzelnen Blöcken dienen nur der Übersichtlichkeit beim Studieren des Codes, kannst Du löschen. Ebenso wie die MsgBox, ist nur zur Demo.

Das Blatt "help" blendest Du am besten aus, damit da keiner dran rumfingert.

https://www.herber.de/bbs/user/2368.xls

Und da ich so doof bin, hoffe ich dass ich Dich jetzt richtig verstanden habe und es das ist was Du suchst...

Nix für ungut und beste Grüße
Franz
AW: Alternative
09.12.2003 00:15:39
Jens
Hallo Franz

Zunächst einmal möchte ich mich bei Dir entschuldigen, wenn ich vielleicht etwas mißverständlich angekommen sein sollte. Es war nicht meine Absicht Dich bloß zu stellen.
Es würde mir im Traum nicht einfallen jemanden, den ich schon mal überhaupt nicht kenne, derart zu kritisieren.
Tut mir echt leid wenn das so bei Dir angekommen sein sollte.

Manchmal meint man eben das Richtige zu sagen und kommt doch ganz anders an.
Also noch mal, ein großes soooorrrrryyyyy.

Nun zu Deiner Datei.
Du bist ein Held, wie ich es schon angekündigt habe. Genauso sollte es funktionieren. Danke, Danke, Danke.

Wenn ich jetzt noch ein wenig englisch könnte und die VBA Sprache beherrschen würde, könnte ich auch noch verstehen was Du da tolles geleistet hast.
Jetzt kann ich aber endlich das Problem der Öffnerei mit den Excelvorlagen schon mal lösen.

Jetzt sei aber noch die Frage erlaubt: "Funktioniert das auch mit dem Öffnen von Wordvorlagen"
Einige meiner Vorlagen sind leider Worddateien.
Geöffnet werden sie bei mir über das Makro:
zB.


Sub Schaltfläche8_BeiKlick()
Dim stAppName As String
stAppName = "C:\Programme\Microsoft Office\Office\winword.exe G:\Mitte\VKD-Mitte\Meldungen\Meldungen_Betrieblich\01_Vorlagen\Meldung.doc"
Call Shell(stAppName, 1)
End Sub


Ich habe schon mal versucht Dein Makro etwas zu verändern, um Word bzw. auch die Wordvorlage zu öffnen. Aber leider klappt das nicht.Selbstverständlich soll hier auch der Pfad gesucht werden.

Ist das nun auch über diesen Weg möglich, den Du mir freundlicher Weise jetzt so toll aufgezeigt hast, oder funktioniert das nicht.

Ich möchte Dich nicht überstrapazieren, aber hättest Du noch mal die Kraft mir das Unmögliche möglich zu machen???????

Ich werde mir meine Wortwahl in Zukunft auch sehr überlegen, versprochen.

Herzlichen Gruß von Jens
AW: Alternative
09.12.2003 07:11:23
Jens
Hallo Franz

Vergessen hab ich noch, dass ich ebenfalls über einige Schaltflächen ein bestimmtes Verzeichnis über den Explorer öffne. Auch hier wäre die automatische suche wünschenswert.

Makro Code lautet bei mir zB.


Sub Schaltfläche74_BeiKlick()
Dim stAppName As String
Dim gDir As String
gDir = "G:\Mitte\VKD-Mitte\Meldungen\"
stAppName = "EXPLORER.EXE /e," & gDir
'DoCmd.Maximize
Call Shell(stAppName, 1)
End Sub


Wäre toll wenn es da auch funktionieren würde.

Gruß Jens
alle Pfade, bitte
09.12.2003 08:28:54
Franz W.
Hallo Jens,

schick mir doch bitte mal für die Explorer- und auch die Word-Geschichte die exakten Pfade,
so wie Du sie für die Excel-Vorlagen geschickt hast:

einmal unter:
G:\AbtT103\Mitte\VKD-Mitte\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\Süd\VKD-Süd\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\West\VKD-West\Vorlage\Meldung.xls
oder unter:
G:\AbtT103\Nord\VKD-Nord\Vorlage\Meldung.xls

Dann brauch ich nicht rumzuraten, wo genau die Unterschiede zwischen den einzelnen
Pfaden sind.

Grüße
Franz
AW: alle Pfade, bitte
09.12.2003 11:13:27
Jens
Hallo Franz

Danke erst mal das Du nicht sauer bist und Dich weiterhin bemühst.

Ich habe Dir mal die Oberfläche zur Verfügung gestellt, damit Du Dir endlich ein richtiges Bild machen kannst, wie das Ding aufgebaut ist. Es ist nicht mehr die aktuellste Version, die läuft auf Arbeit und es ist noch einiges dazugekommen, aber die Schaltflächen sind genauso vorhanden wie in diesem Beispiel.

In der Oberfläche selbst habe ich die Schaltflächen "Pflichtfahrten", "Überstundenzettel" und "Dienstzettel Fußdienst" soweit angepasst, wie Du es mich gelehrt hast. (Großer Meister :-))
Bei diesen Vorlagen handelt es sich ausschließlich um Excelvorlagen. Es sind zwar noch ein paar andere vorhanden, aber die habe ich erst mal aussen vor gelassen.
Ich habe diese 3 Schaltflächen nur zum Testen eingerichtet, um auch Dein Makro modifizieren zu können.

In dem Blatt "help" habe ich die Testpfade hinterlegt und jeweils einen Zusätzlichen Pfad für den Test zu Hause ("D:\Test\") eingefügt.
Dort habe ich einfach drei leere Exceldateien eingefügt, die genau die gesuchten Namen haben. Dann habe ich noch in Deinem Makro den Zellenbereich von "help"
auf "For i = 1 To 100" erweitert, damit ich die Pfade weiter vervollständigen kann.
Ich hoffe soweit alles richtig gemacht zu haben, denn es funktioniert.

Die Schaltflächen darüber öffnen Wordvorlagen.
Da bist Du wieder am Zug.
Genauso sind dann unter "Unfälle,Meldungen,Termine" die Schaltfläche, die dann den Explorer und ein bestimmtes Verzeichnis öffnen sollen.

Ich hoffe die Angaben sind erst mal zu Deiner Zufriedenheit und Du kommst weiter.

PS. Schaltflächen die den Pfad \\FILE1\ haben, können so bleiben, da sie im Netz nur auf diesen einen Pfad zugreifen.

Herzlichen Gruß

Jens
AW: Mit Makro Makropfade ändern
05.12.2003 10:18:18
Jens
Danke erst mal für die Schnelle Antwort.

Auch wenn ich hier und da schon mal in den Beiträgen nachgelesen habe wie man so was machen könnte, versteh ich allerdings recht wenig. Wahrscheinlich setzen die meisten Beiträge eine ausreichende Grundkenntnis in VBA voraus, um damit was anstellen zu können.
Die habe ich leider nicht, sorry.

Besteht nicht die Möglichkeit mal eine Testdatei zur Verfügung zu stellen, in der ich die Funktionsweise nachvollziehen kann. Bitte mit eventueller Erklärung. Vielleicht versteh ich dann was und wie ich meine Vorstellung umsetzen kann.
Bei allen Beispielen die ich bis jetzt ausprobiert habe bekomme ich ständig Komplimentierungs- und andere Fehler.

Ich wäre Euch sehr dankbar.

Gruß Jens

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige