Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1132to1136
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
Inhaltsverzeichnis

Name der ExcelDatei, welche das Makro startet | Herbers Excel-Forum

Name der ExcelDatei, welche das Makro startet
24.01.2010 23:53:57
Thomas

Hallo!
Ich suche nen Trick oder nen Befehl für folgende Situation:
Arbeitsmappe1 greift mittels einem Makro auf eins ihrer Arbeitsblätter zu
Während das Arbeitsblatt einen fixen Namen - z.B. "xyz" - hat, kann der Arbeitsmappenname beim Speichern geändert werden.
Da ich oder ein anderer User in der gleichen Excel-Session auch eine weitere Mappe geöffnet haben kann,
funktioniert der Bezug
activeworkbook().worksheets("xyz") nicht
Auch workbooks("Arbeitsmappe1").... klappt nicht, da ich den Namen Arbeitsmappe1 nicht garantieren kann.
Deshalb suche ich eine Funktion oder einen Trick, der mir den Namen der Arbeitsmappe, die das Makro aufruft, liefert. Dann könnte ich mit workbooks() weitermachen.
Da ich das Makro auch per Timer aufrufen kann, kann ich nicht gewährleisten, daß die Arbeitsmappe beim Makrostart die aktive ist, lediglich, daß sie geöffnet ist, ist klar.
Gruß
Thomas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Da wir nicht wissen, um welche Art von Makros...
25.01.2010 00:53:09
Luc:-?
..es sich handelt und wie die „aus der Mappe“ aufgerufen wdn, Thomas,
— bei udFktt in Blattzellen könnte man mit Application.Caller.Parent.Name arbeiten — kann ich nur vorschlagen, die Mappen unterschiedliche kurze Rufprozeduren aufrufen zu lassen, die dann die entsprechende HptProzedur parametriert aufrufen, d.h., sie übergeben den Namen ihrer jeweils einzigen „Partnermappe&ldquo an die HptProz. Allerdings muss dann gewährleistet sein, dass dieser Name auch aktuell ist, was Korrekturläufe erforderlich machen würde.
Deshalb ist es wahrscheinl günstiger, eine Zelle auf dem jeweiligen Blatt zu reservieren, dort die xlFkt ZELLE einzusetzen und so den Dateinamen zu ermitteln. Der ist bei automatischer Berechnung immer aktuell. Allerdings bleibt so das Problem für die Prozz bestehen. Deshalb wirst du wohl mit einer festen Kennung pro Mappe und einer Liste mit dieser Kennung und dem Dateinamen (aus ZELLE) arbeiten müssen. Die Partnerprozz übergeben dann entweder nur die Kennung an die HptProz und die schlägt in der Liste nach oder die Partner erledigen das gleich mit.
Gruß Luc :-?
Anzeige
Lösung: ThisWorkbook.worksheets("xyz")
25.01.2010 07:35:20
Martin S.
Hallo Thomas,
einfach statt ActiveWorkbook ein ThisWorkbook einsetzen.
Viele Grüße
Martin
...und, was soll das bewirken,...
25.01.2010 10:33:49
Luc:-?
...Martin...?!
In welchem Wb sein Makro steht und wie er das rausbekommt, wird Thomas mit xlGut ja wohl wissen! ...den Namen der Arbeitsmappe, die das Makro aufruft... hat er geschrieben! Was meinst du wohl, warum ich mir einige Gedanken mehr gemacht habe als du...?! Also, erst Gehirn einschalten, dann antworten! :->
Gruß Luc :-?
Luc, bitte am Umgangston arbeiten! So nicht!
25.01.2010 11:06:55
Martin S.
Hallo Luc,
Beleidigungen wie

Also, erst Gehirn einschalten, dann antworten! :->
sind hier fehl am Platz!
Ich hatte Thomas so verstanden, dass er den Namen der Arbeitsmappe wissen möchte, in der das Makro steht. Auch wenn ich ihn falsch verstanden haben sollte (er hat ja leider nicht geantwortet), ist deine Reaktion ja völlig unangebracht.
Martin
Anzeige
Hättest du als Erster so wie oben geantwortet,...
25.01.2010 12:01:55
Luc:-?
...hätte ich dir das ohne den Spruch kommentiert oder nicht beachtet, Martin...
Da aber schon ein Beitrag von mir vorhanden war, den du offensichtlich nicht gelesen bzw verstanden hast, hast du dich selbst als Ignorant geoutet...
Zwar hättest du mit dem Ton im Prinzip recht — war sarkastisch gemeint, Ähnliches kann man an manchem Arbeitsplatz auch in Emaille lesen — aber hast, indem du eine unqualifiziertere Antwort (keinen lapidaren Kommentar bzw Nachfrage!) ohne ernsthaften Grund nachgesetzt hast, als Erster gg allgemeine Forumsregeln verstoßen. Also musst du dich nicht über meine Reaktion wundern... ;-)
Gruß Luc :-?
Anzeige
AW: Name der ExcelDatei, welche das Makro startet
25.01.2010 11:16:35
Tino
Hallo,
übergebe die Mappe an eine Variable mit dieser kannst Du dann arbeiten.
Public oWB As Workbook 'in ein Modul
Sub Makro1()
Set oWB = Workbooks.Open("C:\Mappe1.xls")
End Sub
Nun kannst Du anstatt mit ActiveWorkbook mit dieser Variablen arbeiten,
auch wenn die Datei mit speichern unter einen anderen Namen oder Pfad bekommt behält oWB den Bezug zu dieser.
Sub schließen()
oWB.Close False
End Sub

Gruß Tino
AW: Name der ExcelDatei, welche das Makro startet
25.01.2010 22:20:55
Thomas
Danke Euch allen
Der Tip mit dem ThisWorkbook hat mir in der aktuellen Situation am meisten geholfen
allerdings nur mit Umweg über set
dim wbk as workbook
dim strname as string
set wbk = thisworkbook
und dann
strname = wbk.name
damit klappts
strname kann ich dann weiterverwenden
Und hey.... wegen mir ned gegenseitig die Köpfe einschlagen! Daß ich nicht geantwortet hab, liegt einfach daran, daß ich meist erst abends an meinen PC und Internet kann.
Danke Euch!
Thomas
Anzeige
Da kann man mal wieder sehen, dass ein...
26.01.2010 00:42:15
Luc:-?
...Missverständnis auch zu einer richtigen Lösung führen kann, Thomas...
Im Grunde ist das eigentlich das, was Tino vorgeschlagen hat, nur dass du das im Detail wahrscheinlich anders umgesetzt hast. Mein Vorschlag lief auf dasselbe, nur mit anderer Regie, hinaus. Wer kann denn ahnen, dass jemand, der sich mit VBAgut einschätzt ThisWorkbook nicht kennt, dass von Vielen geradezu inflationär und oft unnötig anstelle von ActiveWorkbook eingesetzt wird. Hier macht es aber Sinn, wenn eine Mappenproz einen so ermittelten Namen an eine aufgerufene HptProz als Parameter übergibt. Ich hatte einen etwas anderen Weg vorgeschlagen, weil du nicht mitgeteilt hattest wie der Aufruf erfolgt...
Gruß Luc :-?
Anzeige
AW: Da kann man mal wieder sehen, dass ein...
26.01.2010 22:30:59
Thomas
Muß ich mal versuchen...
kenn "this" aus anderen Programmiersprachen, aber bei Excel VBA hab ich n tatsächlich noch nie benutzt. War noch nie nötig
Aufruf hab ich absichtlich nicht gegeben, da ich verschiedene Baustellen hab.
Einer zB. wär ne Prozedur die per application.ontime per timer aufgerufen wird, einfach als übergegegeben PRodzedur, wobei diese Prozedur dann z.B. nen Zellinhalt per Outlook weitermailt.
Hatt ich n anderes Workbook aktiviert, liefs schief, wenn ich nicht den Workbooknamen speziell genannt hatte.
usw usw usw usw....
auf alle Fälle is mir geholfen und ich schau mir auch mal Deine Lösung an
Dank Euch
Thomas
Anzeige
Letzteres ist nicht unbedingt nötig,...
27.01.2010 13:01:23
Luc:-?
...Thomas,
das habe ich nur deshalb so vorgeschlagen, weil ich nicht wusste, was deine proz'aufrufenden Routinen so tun bzw wo sie stehen. Deshalb wollte ich was Allgemeineres vorschlagen. ThisWorkbook-Anwendung setzt ja voraus, das die aufrufende Routine auch tatsächlich zu dem Wb gehört, dessen Name die HptProz benötigt.
Übrigens liegst du schon richtig, wenn du ThisWorkbook nicht einsetzt, wenn es eigentlich ActiveWorkbook sein soll. Diejenigen die ThisWorkbook stets (ersatzweise) verwenden, wdn sich wundern, wenn sie ihre Prozeduren mal zentral sammeln wollen...
Gruß Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige