MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Excel
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 14.06.2018, 00:40   #1
Jorge33
MOF User
MOF User
Standard Excel2010 - Sind Module für Makroposition steuerbar?

Hallo, ich habe eine Datei namens "a.xlsm" in der ich über vba workbooks.open die Datei "b.xlsm" öffne. Die Datei "b.xlsm" wiederrum hat eine Schaltfläche die ein Makro startet. Ist es nun möglich es zu steuern, ob die Module von der Datei "a.xlsm" oder der Datei b.xlsm" nach diesem Makro durchsucht werden?

Gruß Jorge
Jorge33 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 05:39   #2
Hajo_Zi
MOF Guru
MOF Guru
Standard

Hallo Jorge;

Was Bitte möchtest Du machen?
Dir ist es klar da Du Deine Datei siehst.


GrußformelHomepage

__________________

Signatur in jedem Beitrag
m Forum kann der Beitrag als erledigt markiert werden. Also mache es unten links mit Klick auf den Schalter "als erledigt setzen", falls Problem gelöst.
Der Zustand des Beitrages wird dann in der Übersicht angezeigt und man braucht sich diese Beiträge nicht mehr ansehen.
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Betriebssystem: Windows 10 - 64 Bit, Office 2016 - 32 Bit.
Fragen werden im Forum beantwortet, nicht per PN.
Hajo_Zi ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 07:51   #3
Jorge33
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Hajo,

ich habe ein Excel Grundprogramm in dem ich viele Schaltflächen habe. Jede Schaltfläche öffnet mir eine weitere Exceldatei (ich nenne sie jetzt mal Dienstprogramme) die ich bearbeiten, speichern und wieder schließen will. Das Grundprogramm steuert sozusagen übersichtlich viele Dienstprogramme.
Jetzt ist es so, das jedes Dienstprogramm das ich mit dem Grundprogramm öffne, eigene Module mit Makros enthält die ich ausführen möchte. Und machmal geht das und manchmal geht das nicht und ich wußte anfangs nicht wieso.
Ich habe dann etwas herum experimentiert und festgestellt, das manchmal das Dienstprogramm das ich öffne in seinen eigenen Modulen nach den Makros sucht und ausführt, aber manchmal sucht das Dienstprogramm in den Modulen des Grundprogramms nach den Makros. Und da die Makros nicht im Grundprogramm drin stehen (und ich das eigentlich auch nicht will) kommt es zu Fehlermeldungen, weil das Makro nicht gefunden wird. Daher meine Frage, ob es einen Befehl gibt mit dem ich sagen kann, das jedes Dienstprogramm das ich öffne in seinen eigenen Modulen nach Makros sucht und nicht im Grundprogramm?
So, ich hoffe ich habe es eingermaßen verständlich erklärt. Danke schon mal fürs lesen.

Gruß Jorge
Jorge33 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 09:04   #4
EarlFred
MOF Guru
MOF Guru
Standard

Hallo,

probier mal:

Code:

Sub inMappe1()
Call Application.Run("Mappe2.xlsm!Modul1.Test")
''''Call Application.Run("Mappe2.xlsm!Test")
End Sub
Den Code mit kompletter Referenzierung würde ich bevorzugen. Wenn Du den Modulnamen nicht kennst, kannst Du ihn, wie in der 2. Codezeile gezeigt, weglassen. Denn ist die Referenz allerdings nicht mehr eindeutig, d. h. bei mehrfach vorkommenden Prozedurnamen kannst Du nicht mehr sicherstellen, dass die richtige anläuft.

Ein anderes Konzept wäre das Einbinden des VBA-Projekts in die Mappe1 über den Menüpunkt Extras/Verweise im VB-Editor. Ich habe das Projekt der Mappe2 im Beispiel in "Mappe2Project" umbenannt:
Code:

Sub inMappe1()
Call Mappe2Project.Modul1.test
End Sub
In diesem Fall muss die Mappe2 aber dauerhaft offen bleiben und wird beim Start von Mappe1 auch automatisch mit geladen. Aber vielleicht ist das ja genauso gewollt.

Grüße
EarlFred

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 14:59   #5
Jorge33
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Fred,

Erstmal danke für deine Antwort. Ich habe das jetzt einfach mal nachprogrammiert, also Mappe1 und Mappe2 erstellt, den

Code:

Call Application.Run("Mappe2.xlsm!Modul1.Test")
in Mappe1 eingefügt und in Mappe2 ein Makro namens "Test" erstellt.

Das läuft alles soweit, ist aber leider nicht genau das, was ich brauche.
Ich habe ja in Mappe2 mehrere Makros und weiß beim Öffnen von Mappe2 noch gar nicht, welches Makro ich starten will. Daher kann ich auch nicht in Mappe1 sagen: Öffne Mappe2 und starte das Makro Test...
es müßte eher so sein das ich in Mappe1 sage: Öffne Mappe2, wechsle Ansicht zu Mappe2 und suche beim nächsten Aufruf eines Makros nur noch in den Modul(en) der Mappe2...falls das überhaupt geht...


Gruß Jorge
Jorge33 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 16:50   #6
EarlFred
MOF Guru
MOF Guru
Standard

Hallo Kevin,

mal am Rande: Wenn meine Name Fred wäre oder ich so genannt werden wollte, warum unterzeichne ich dann nicht so?

Zitat:

das, was ich brauche.

...solltest Du im Eröffnungsbeitrag klar und deutlich formulieren.

Zitat:

[...]in der ich über vba workbooks.open die Datei "b.xlsm" öffne.

Der Name des Workbooks ist Dir also bekannt.

Wie Du aus der Codezeile sehen kannst, wird die Prozedur über einen String definiert, den man auch frei zusammensetzen kann:
Call Application.Run("Mappe2.xlsm!Modul1.Test")
-> Call Application.Run(DeineVariableMitDemMappennamenUndEndung & "!Modul1.Test")

Grüße
EarlFred

__________________

Datum und Uhrzeit, Makrorekorder-Code entschlacken, {Matrixformeln}
Tutorials zu Pivottabellen: Kurzeinstieg; Dynamischer Datenbereich; Daten und Zeiten gruppieren
Für 6 meiner Beiträge haben sich die Hilfesuchenden mit einer Spende an Wikipedia, die Tafeln oder Hilfe für krebskranke Kinder eV bedankt (das entspricht 0,044% per 26.07.2018) - eine tolle Geste!
EarlFred ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.06.2018, 20:20   #7
Jorge33
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo EarlFred,

ich setzte mich heute abend nochmal hin und versuche es hinzubekommen.
Danke für die Unterstützung.

Gruß Jorge
Jorge33 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:09 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.