Autor
|
Thema: Makros nacheinander ausführen (17140 mal gelesen)
|
piston Mitglied Konstrukteur
Beiträge: 140 Registriert: 18.05.2004 Pro/E WF4<P>Windows XP 64bit
|
erstellt am: 09. Okt. 2006 17:12 <-- editieren / zitieren --> Unities abgeben:
Hallo, habe mir mit dem Rekorder 2 Makros erstellt. Nun würde ich gerne mit einer Tastenkombination (mit einem 3. Makro) die beiden Makros nacheinander ausführen - klappt aber leider nicht. Ich habe es mit folgendem Befehl probiert:
Sub Makro3() Application.Run "PERSONL.XLS!Makro1" Application.Run "PERSONL.XLS!Makro2" End Sub Die beiden Makros hintereinander händisch zu starten geht, aber bei dem Versuch die Makros hintereinander auszuführen, wird nur das Makro1 ausgeführt und das Makro2 nicht Hat bitte jemand einen Lösungsweg? DANKE! lG piston Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 09. Okt. 2006 18:57 <-- editieren / zitieren --> Unities abgeben: Nur für piston
|
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Okt. 2006 07:35 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Hallo piston, Also am Aufruf Code: Sub Makro3() Application.Run "PERSONL.XLS!Makro1" Application.Run "PERSONL.XLS!Makro2" End Sub
liegt's nicht. Der läuft. Poste doch mal Deine Makros1 und 2, der Wurm muß da drin liegen. Am Besten direkt die ganze Mappe uppen, das spart evtl. weiteres Nachhaken Gruß, Nicole ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 5 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Okt. 2006 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Nachtrag: Du kannst Dir sowas auch einfacher machen: Solange die Sub Public ist, kann sie direkt angesprochen werden: zu Public und Private siehe Hilfe und das hier Bsp:
Code: Sub Makro1() Range("A5:A7").Select Selection.Interior.ColorIndex = 6 Makro2 End Sub
Code: Sub Makro2() Range("C7:C10").Select Selection.Interior.ColorIndex = 8 End Sub
und die Tastenkombination auf Makro1 vergeben, das Makro3 entfällt dadurch komplett. anstelle von "Makro1" und "Makro2" würd' ich allerdings sinnvollere Namen vergeben, die darfste nämlich durchaus ändern, nur drauf achten, die dann auch überall zu ändern! ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 5 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
piston Mitglied Konstrukteur
Beiträge: 140 Registriert: 18.05.2004 Pro/E WF4<P>Windows XP 64bit
|
erstellt am: 10. Okt. 2006 10:33 <-- editieren / zitieren --> Unities abgeben:
Hallo, mein 1. Makro: --------------------- Sub Makro1() Workbooks.OpenText Filename:= _ "C:\Dokumente und Einstellungen\user\Eigene Dateien\txt.txt", Origin:= _ xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _ 2), Array(29, 2), Array(48, 2), Array(61, 2), Array(89, 2), Array(103, 2)) End Sub ----------------------- Bewirkt das aus den Eigenen Dateien ein File "txt.txt" ins Excel eingelesen wird und die Werte entsprechend formatiert werden (Spaltenaufteilung) Und mein 2. Makro: ------------------------ Sub Makro2() Columns("A:F").EntireColumn.AutoFit End Sub ------------------------ Bewirkt einach das die Spaltenbreiten der Spalten A bis F an die Einträge in den Spalten angepaßt werden. Wie gesagt, hintereinander ausführen kein Problem, aber in einem Makro zusammenfassen oder über ein drittes Makro beide hintereinander laufen lassen funktioniert leider nicht. lG piston Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Okt. 2006 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Sorry, Kann Dein Problem nicht nachvollziehen: Code: Sub Makro1() Workbooks.OpenText Filename:= _ "C:\Dokumente und Einstellungen\user\Eigene Dateien\txt.txt", Origin:= _ xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, _ 2), Array(29, 2), Array(48, 2), Array(61, 2), Array(89, 2), Array(103, 2)) Makro2 '<- hier der Aufruf oder direkt: Columns("A:F").EntireColumn.AutoFit End Sub
läuft ohne Probleme. Anmerkung: nur auf Lauffähigkeit, nicht auf Inhalt getestet. ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 5 [Diese Nachricht wurde von runkelruebe am 10. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 10. Okt. 2006 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für piston
da dein Makroaufruf aus der Personal.xls kommt, die Datei aber in einem anderen Excelmappe erzeugt wird... woher soll dann Code: Sub Makro2() Columns("A:F").EntireColumn.AutoFit End Sub
wissen wo in welche Mappe sich das Columns("A:F").EntireColumn.AutoFit befinden soll :-) das Makro in der Mappe müsste reibungslos funktionieren. aber aus der Personal.xls... oder schreibt der deine txt.txt in die Personal . xls... [Thedit]Antwort auf nachfolgende Post :-) Zitat: Original erstellt von runkelruebe: ...Und während das Makro noch läuft, sitzt der Focus auf dieser neuen Mappe, also werden auch die Spalten formatiert.
:-) war nur eine ungetestete Mutmassung meinerseits... hätte ja sein können^^ :-)[Theditoff][Diese Nachricht wurde von Thomas Harmening am 10. Okt. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 10. Okt. 2006 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Nee Thomas, sorry, aber da kann's nich dranliegen.. Habe selber das Ding in einer "Mappe1" nachgestellt. Sein Makro 1 erzeugt eine eigene Datei "txt.txt" als Excel-Datei. Und während das Makro noch läuft, sitzt der Focus auf dieser neuen Mappe, also werden auch die Spalten formatiert. Habe es mittlerweile in der PERSONL.XLS, der Mappe1 und in der txt.txt getestet, mit Modulen mal da, mal da... mal als Aufruf: Application.Run, mal als Aufruf Makro2, mal als direkte Zeile... immer derselbe Effekt: funzt Weiß also nicht, wo jetzt noch das Problem liegen könnte. ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 5 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 10. Okt. 2006 19:02 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Zitat: Original erstellt von runkelruebe: immer derselbe Effekt: [b]funzt [/B]
hehe! :-) zwischen Himmel und Erde ist nicht immer alles erklärbar :-) manchmal braucht es auch eine gewisse Ambivalenz, damit es zur Zufiedenheit Beider läuft... hmmm, ... und bei einigen findet sich sowas, gar als Hassliebe wieder - auch eine Ambivalenz ich gehe mal den Bildschim streicheln^^ *dies ist nur ein offtopic-Beitrag - muss auch manchmal sein*
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
piston Mitglied Konstrukteur
Beiträge: 140 Registriert: 18.05.2004 Pro/E WF4<P>Windows XP 64bit
|
erstellt am: 18. Okt. 2006 12:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, Danke das Ihr Euch die Mühe gemacht habt und das Beispiel nachgebaut habt, nur leider bekomme ich meine Makros nicht hin.
Ich habe Euch in der Anlage meine Textdatei und die Module (welche ich in meiner Personl.xls unter Module habe) angehängt. Im Modul1 müßtet Ihr den Pfad für die Textdatei an Euren Speicherplatz anpassen. Modul1 alleine funktioniert Modul2 alleine funktioniert Modul4 alleine funktioniert aber Modul3 (sollte 1 und 4 hintereinander ausführen, funktioniert nicht) Wenn Ihr Euch das Ding mal ansehen könntet DANKE!!!!!!!! lG
Piston
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 18. Okt. 2006 13:19 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Hallo piston, ganz kurz und trocken: ich habe mal die Makros umbenannt, wie oben schon mal empfohlen. Makro1 = Public Sub Einlesen() Makro4 = Public Sub Verzahnung() und in Makro 3 steht dann nur noch:
Code: Sub Makro3() Call Einlesen Call VerzahnungEnd Sub
Makro3 ausführen und zack damit werden beide nacheinander abgearbeitet. Den Pfad "C:\CAD-de\Down\datenimport\datasheet.txt" in Einlesen() mußt Du natürlich wieder ändern! Ich stelle die mappe wieder rein. hth Nicole PS: wie vorher: code nicht angeschaut, nur auf "Läuft oder läuft nicht" geprüft, da könnte man bestimmt nochmal straffend tätig werden ------------------ Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... ---------------- Erfinnder-Gilden-Lehrling Stufe: 5 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 18. Okt. 2006 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für piston
|
piston Mitglied Konstrukteur
Beiträge: 140 Registriert: 18.05.2004 Pro/E WF4<P>Windows XP 64bit
|
erstellt am: 18. Okt. 2006 14:08 <-- editieren / zitieren --> Unities abgeben:
Hallo, wiedereinmal vielen Dank für Eure Bemühungen!!!
Jetzt habe ich aber erst bemerkt woran es wirklich scheitert: Das Problem ist das Marko 3 zum Ausführen von 1+4. Wenn man versucht das Makro 3 über einen Shortcut (in meinem Fall: Strg+Shift+H) auszuführen wird nur das Makro 1 ausgeführt. Wenn ich den Shortcut auf Strg+H ändere, bzw. einfach über Makro ausführen gehe, funktioniert es?!? Damit wäre mein Problem gelöst, obwohl es doch einwenig eigenartig ist, das die Ausführung eines Makros vom verwendeten Shortcut beeinflußt wird. DANKE!DANKE!DANKE! lG
Piston Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Paulchen Mitglied Bauing./SW-Entwickler
Beiträge: 1227 Registriert: 19.08.2004 Büro: Win10 Enterprise 64bit, Office Professional Plus 2013 - Privat: Linux Mint 15, LibreOffice
|
erstellt am: 18. Okt. 2006 14:22 <-- editieren / zitieren --> Unities abgeben: Nur für piston
Hallo Piston, mal so ganz ins hell-blaue hinein: Zitat: ... obwohl es doch einwenig eigenartig ist, das die Ausführung eines Makros vom verwendeten Shortcut beeinflußt wird.
Könnte daran liegen, WO Du beim Aufzeichnen Dein Makro speicherst: "Makro speichern in -Diese Arbeitsmappe -Persönliche Arbeitsmappe -Neue Arbeitsmappe" Wer da wem den Rang abläuft, weiß ich leider nicht:-( Der Blauäugige Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |