Autor
|
Thema: automatisch makro bei dateiöffnen ausführen (18475 mal gelesen)
|
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 10. Jan. 2008 16:49 <-- editieren / zitieren --> Unities abgeben:
|
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 10. Jan. 2008 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Geh mal in den VB Editor und klicke "Diese Arbeitsmappe" an, dann hast Du Aktionen, die du abfangen kannst und eine davon ist dann auch "Sub Workbook_Open()", Da kannst Du dann reinschreiben was Du beim Öffnen machen willst. Axel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 11. Jan. 2008 10:57 <-- editieren / zitieren --> Unities abgeben:
Hört sich gut an, aber ich als vba nullchecker krieg es noch nicht hin: Folgendes habe ich geschafft: makro erzeugt vba editor geöffnet unter "diese Arbeitsmappe" Private Sub Workbook_Open() darunter den Namen meines Makros geschrieben und bekomme beim Öffnen der Datei leider eine Fehlermeldung (fehler beim kompilieren, syntaxfehler) was mach ich falsch?? Joeycool wo
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: 11. Jan. 2008 11:15 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Moin, moin, Zitat: was mach ich falsch??
keine Ahnung, Du verrätst uns Deinen aufrufenden code ja nicht ;-) Die Syntax würde so aussehen:
Code: Private Sub Workbook_Open() Application.Run "DATEINAME.XLS!Makroname" End Sub
oder, wenn sie in derselben Datei steht einfach
Code: Private Sub Workbook_Open() Call Makroname End Sub
Hilft's schon? ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Alte Suche Excel Alte Suche Autodesk FAQ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Beverly Mitglied Dipl.-Geologe (Rentner)
Beiträge: 394 Registriert: 11.08.2007
|
erstellt am: 11. Jan. 2008 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
|
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 11. Jan. 2008 11:25 <-- editieren / zitieren --> Unities abgeben:
yessssss das wars, als nullchecker hatte ich nur den makronamen eingefügt, das davor ein "application.run" muss, konnte ich nicht wissen, oder doch. egal, problem gelöst, makro läuft, und ich kann entspannt ins we fahren.. thanx joeycool PS: das makro interessiert Euch nicht wirklich, oder??? Es fügt die aktuelle Zeit in eine tabelle ein, erscheint mir etwas zu banal, um es hier vorzuführen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 11. Jan. 2008 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Hallo Joeycool, Zitat: Original erstellt von joeycool: PS: das makro interessiert Euch nicht wirklich, oder??? Es fügt die aktuelle Zeit in eine tabelle ein, erscheint mir etwas zu banal, um es hier vorzuführen.
Doch klar, zur Problemlösung wäre das hilfreich gewesen. Als Funktion zum Üben mit den Makros vielleicht auch, als echte Funktion nehm ich dann lieber einfach die Tastenkombination STRG+: , um die aktuelle Uhrzeit einzufügen. Als "alter" Programmierer versuch ich möglichst nichts neu zu machen, was schon gut und funktional vorhanden ist. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog 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: 11. Jan. 2008 11:49 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Nein, interessiert uns nicht, aber der Aufruf des Makros, der wäre halt wichtig gewesen auf die Frage: "Was mache ich falsch" ;-) Und: Das Application.Run benötigst Du imho nur, wenn es ein Makro ist, welches nicht in der Datei liegt, in der es ausgeführt wird. Andererseits machst Du damit ja auch nichts falsch, ist dasselbe wie Sub Name() und Public Sub Name(): Public ist default, aber sauberer finde ich es, wenn man es explizit hinschreibt. An das Application.Run wärst Du übrigens auch gekommen, wenn Du mal den Makrorekorder angeworfen hättest, das arme Ding wird so oft ignoriert, dabei ist der für den Anfang doch sooo schön ;-) Egal, es läuft, also SWE! PS: Stefan... welch seltener Gast...
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Alte Suche Excel Alte Suche Autodesk FAQ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 14. Jan. 2008 10:55 <-- editieren / zitieren --> Unities abgeben:
hallo runkelrübe und stefan, konnte aus Euren Antworten noch ein paar wertvolle tips ziehen: z.B. daß man ein makro in der entsprechenden tabelle spreichert, anstatt in der personl.xls (kleine Zusatzfrage, wie krieg ich die nicht mehr benötigten makros aus dieser datei wieder raus, wenn ich löschen wähle, sagt er mir, ich soll die datei wieder einblenden, wie mach ich das??) ach so, und der makro rekorder: klar kenn ich den, nur so können bei mir makros entstehen und @stefan: das tasturkürzel zum einfügen der zeit ist auch nicht schlecht, sogar praktisch. In meinem Fall wollte ich allerdings tatsächlich das makro, ich will in einer persönlichen zeiterfassung die Zeit haben, wo ich den computer einschalte (Arbeitsbeginn), und das Kürzel betätigen, würde ich zu oft vergessen. Makro ist übrigens das hier: Range("AI41").Select ActiveCell.FormulaR1C1 = "=NOW()" Range("AI42").Select Selection.Copy Range("E36").Select
wie gesagt, wohl recht banal, aber wenns hilft, why not schöne grüße joeycool 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: 14. Jan. 2008 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Hallo Joey, das Makro kannst Du übrigens noch einwenig einkürzen, ich hatte Dir mal den link zum Thema Makrorekorder gegeben, Du erinnerst Dich? Range("AI41").Select ActiveCell.FormulaR1C1 = "=NOW()"kannst Du zusammenfassen: Range("AI41").FormulaR1C1 = "=NOW()" Und was genau machst Du damit noch?: Range("AI42").Select Selection.Copy entweder fehlt da was, oder es ist schlicht und ergreifen überflüssig ;-) Range("E36").Select damit setzt Du auch nur diese Zelle aktiv, oder? Zur PERSONL.XLS: Wo löscht Du was? IM VBA-Editor, in der personl, mit RMT auf dem Modul -> Modul entfernen? Und da kommt die Fehlermeldung? Ist Deine personl. standardmäßig ausgeblendet? Schau zu dieser Sondermappe mal HIER drüber ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Alte Suche Excel Alte Suche Autodesk FAQ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 14. Jan. 2008 11:31 <-- editieren / zitieren --> Unities abgeben:
klasse, der link, die personal frage ist damit gelöst, muss man ja auch erst mal wissen. zum Makrorekorder, den habe ich genau dazu benutzt, nämlich zum Aufzeichen einer befehlsfolge, die ich am bildschirm ausgeführt habe, und der hat mir das geliefert.. wieso weiß der dann nicht, daß er das kürzen kann? und das copy habe ich drin, damit der Wert (die Startzeit) in der Zwischenablage liegt, also quasi an der Maus hängt, und ich die im richtigen Feld (dem heutigen Tag) mit return einfügen kann. Ich könnte jetzt sicherlich das Makro noch erweitern/perfektionieren, indem ich den Tag, an dem er es einfügen soll, automatisch über heute ermitteln lassen, aber das war mir für den Anfang zu viel Arbeit auf jeden Fall danke joeycool 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: 14. Jan. 2008 11:37 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Zitat: Original erstellt von joeycool: zum Makrorekorder, den habe ich genau dazu benutzt, nämlich zum Aufzeichen einer befehlsfolge, die ich am bildschirm ausgeführt habe, und der hat mir das geliefert.. wieso weiß der dann nicht, daß er das kürzen kann?
weil das arme Ding ja live mitschneidet und er zum Zeitpunkt des Aufzeichnens gar nicht weiß, was Du alles noch so vorhast. Aber das steht auch alles HIER. Deshalb hatte ich Dir den link im RuA damals gegeben ;-) ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Alte Suche Excel Alte Suche Autodesk FAQ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 14. Jan. 2008 11:51 <-- editieren / zitieren --> Unities abgeben:
stimmt, hört sich logisch an, und praktisch ist das ding ja für "Nicht-Programmier-Könner" wie mich auf jeden Fall. an den link im ruA kann ich mich tatsächlich nicht mehr erinnern, ich bin durch Dein voriges Posting erst drauf gestoßen, (muss ich wohl damals überlesen haben ), aber der link ist wirklich genial. Werde ab jetzt immer erst dort forschen, bevor ich frage joeycool Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joeycool Mitglied Ingenieur TGA
Beiträge: 1451 Registriert: 01.06.2004 ACAD/MEP 2008-2012 Excel 2003 Win XP/ Win 7, 64 bit
|
erstellt am: 17. Jan. 2008 10:51 <-- editieren / zitieren --> Unities abgeben:
Nochmal ne Nachfrage zu dem Thema, nachdem ich durch den support hier schon recht weit gediehen bin. Ich möchte das Makro beim Einschalten des Compis ausführen lassen, eigentlich kein problem, denke ich. Verknüpfung zum der entsprechenden Datei in Windows Autostartverzeichnis kopieren, Compi neu starten und hängt. Er öffnet zwar excel, das wars dann.... Wenn ich dagegen bei geschlossenen Excel auf die Dateiverknüpfung klicke, läuft alles wie gewünscht, also: excel geht auf, dann die datei, dann läuft das makro ab. Muss das so sein? Joeycool PS: in den oben zitieretn Hilfseiten habe ich nichts zu dem Thema gefunden Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 13. Jun. 2009 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Hallo, ich greife das Thema mal auf um mein eigenes Problem zu schildern. Vorweg möchte ich was zum Tipp von Stefan sagen: Wenn ich "Strg + :" drücke wird mir nur das aktuelle Datum und keine Uhrzeit angezeigt. Woran liegt das ? Jetzt zu meinem Problem: Ich hätte gerne eine Funktion, die beim Öffnen der Excel Datei die Zeit zählt. In einer Art "count up" Sodass ich später mal sagen kann: "Dafür hab ich XY Stunden gebraucht" Die gezählte Zeit soll auf einem seperaten Tabellenblatt angezeigt werden. Geht das ? Gruß David ------------------ Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen. Lattenrost ist keine Geschlechtskrankheit !! 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: 13. Jun. 2009 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Zitat: Original erstellt von DegraA: Geht das ?
ja, beim Öffnen der Mappe die Zeit in eine Zelle schreiben, beim Schliessen der Mappe Wert aus Zelle holen, Rechenoperation mir aktueller Zeit und Niederschreiben des Wertes. Code: Private Sub Workbook_Open() Sheets("Internes").Cells(Sheets("Internes").Cells(65536, 1).End(xlUp).Row + 1, 2).Value = Now() End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean) letztezeile = Sheets("Internes").Cells(65536, 1).End(xlUp).Row Sheets("Internes").Cells(letztezeile + 1, 1).Value = Date Sheets("Internes").Cells(letztezeile + 1, 2).Value = Now() - Sheets("Internes").Cells(letztezeile + 1, 2).Value End Sub
BTW STRG+SHIFT+. fügt die aktuelle Zeit, ohne die Sekunden, ein. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 15. Jun. 2009 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Sehr gut. klasse gemacht, aber wie kann ich die aufgenommene Zeit jetzt am besten zusammenzählen ? Wenn ich Summe aus Spalte B mache wird die aktuelle Zeit als Wert in die Summe mit einbezogen. Ich will aber immer nur so weit zusammenzählen, wie die Rechnung abgeschlossen ist. Sprich bis die Spalte A auch ausgefüllt ist. Ist blöd zu beschreiben. Hoffe ihr versteht was ich meine. ------------------ Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen. Lattenrost ist keine Geschlechtskrankheit !! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 15. Jun. 2009 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
Hallo David, Zitat: Original erstellt von DegraA: Vorweg möchte ich was zum Tipp von Stefan sagen: Wenn ich "Strg + :" drücke wird mir nur das aktuelle Datum und keine Uhrzeit angezeigt. Woran liegt das ?
Du drückst nicht STRG und : (Doppelpunkt), sondern STRG und . (Punkt), das gibt das aktuelle Datum. Um an den Doppelpunkt zu kommen musst du natürlich die SHIFT Taste gleichzeitig drücken. Also nur mit Tasten: STRG und SHIFT und "." Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 15. Jun. 2009 10:26 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
|
Thomas Harmening Moderator Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 Das Innerste geäussert und aufs Äusserste verinnerlicht
|
erstellt am: 15. Jun. 2009 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
hmm, Code: =SUMMENPRODUKT((B2:B100)*((A2:A100)>0)) 'gültig für 99 mal Speichern
oder du änderst die Zelle in der die aktuelle Zeit geschrieben wird von Spalte(B) auf Spalte (A) [(oder legst den Zellpatz auf eine andere Zelle zb. C1)]führst dann beim Verlassen von Excel die Operation Aktuelle Zeit - gespeicherte Zeit in Spalte(A) aus und fügst erst dann das Datum ein in Spalte A ein aka geändertem Code
Code: Private Sub Workbook_Open() Sheets("Internes").Cells(Sheets("Internes").Cells(65536, 1).End(xlUp).Row + 1, 1).Value = Now() End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean) letztezeile = Sheets("Internes").Cells(65536, 1).End(xlUp).Row Sheets("Internes").Cells(letztezeile, 2).Value = Now() - Sheets("Internes").Cells(letztezeile, 1).Value Sheets("Internes").Cells(letztezeile, 1).Value = Date End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DegraA Mitglied staatl. gepr. Techniker - Maschinenbau
Beiträge: 177 Registriert: 29.03.2005 Dell Latitude E5500 Core2Duo 2,53GHz 3,45 GB RAM Win XP Prof. SP3 Office 2003 Prof. Catia V4.2.4 Catia V5R19 i break together
|
erstellt am: 15. Jun. 2009 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für joeycool
super das mit dem Summenprodukt reicht schon. habe einfach an die 100 noch 2 Nullen drangehängt. Das sollte fürs erste reichen. Vielen Dank !! ------------------ Am lautesten werden Lehrer, wenn sie "Ruhe!" brüllen. Lattenrost ist keine Geschlechtskrankheit !! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |