Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
140to144
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
140to144
140to144
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Workbook-Wechsel inkl. Events

Workbook-Wechsel inkl. Events
31.07.2002 22:08:45
Arno
Hallo!

Folgendes Problem:

Ich möchte Daten aus einer Excel-Tabelle (unter Excel) in eine Excel-Tabelle, die ich in ein Word-Dokument eingebettet habe, übertragen. Das klappt ja auch.
Aber - mein VBA-Projekt soll beim Verlassen des Excel-Fensters eine meiner Menüleisten ausschalten, und sie danach beim erneuten Aktivieren von Excel wieder einblenden. Dafür habe ich folgenden (vereinfachten) Versuch unternommen:


Code in "Diese Arbeitsmappe":
=============================

Dim AppClass As New EventClass

Private Sub workbook_open()
Set AppClass.App = Application
End Sub

Code in "Eventclass" Klassenmodul:
==================================

Public WithEvents App As Application

Private Sub App_WindowDeactivate(ByVal Wb As Workbook, ByVal Wn As Window)
MsgBox "Altes Fenster: " & Wn.Caption
End Sub

Private Sub App_WindowActivate(ByVal Wb As Workbook, ByVal Wn As Window)
MsgBox "Neues Fenster: " & Wn.Caption
End Sub


Das klappt bestens, wenn ich zwischen zwei Excel-Workbooks die Fenster wechsele.
Auch meldet das Programm korrekt, wenn ich von meinem Excel-Workbook in das Workbook in der Word-Datei hinüberwechsele. Aber - wenn ich dann wieder zurückwechsele, dann bemerkt das Programm es nicht und gibt mir keine Meldung. Es denkt nämlich, ich wäre sowieso immer noch in Excel.
Das Programm meldet mir also den Wechsel in die Tabelle in Word, merkt ihn sich jedoch nicht.

Ich hoffe, mein Problem kommt rüber, und noch mehr hoffe ich, jemand weiss eine Lösung.

Danke für eine Antwort, Arno.

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Workbook-Wechsel inkl. Events
31.07.2002 22:36:13
Alex
Hi!
Vielleicht treten beim Wechseln von Word nach
Excel diese Ereignisse nicht ein.
Probier doch mal, ob ein Selection Change Ereignis beim Wechsel,
ausgelöst wird, welches du abfangen kannst.

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
End Sub

innerhalb von diesem kannst du vielleicht herausfinden,
ob du in Excel oder Word bist - bzw. deine Menüs ein- oder
ausgeblendet werden sollen.

Re: Workbook-Wechsel inkl. Events
31.07.2002 23:39:21
Arno
Hallo Alex.

Gute Idee, aber leider moch nicht die Lösung. Ich habe Folgendes eingefügt:

Private Sub App_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "Sheet: " & Sh.Name
End Sub

Wenn ich in der Tabelle, die in Word eingebettet ist, die Markierung ändere, nennt er mir bei Sh.name den Namen der Tabelle in Word, also korrekt. Aber:

Angenommen, ich habe geöffnet:
- eine Excel-Tabelle (A) mit meinem Macro
- besagte Tabelle in einem Word-Dokument (W)
- ein weiteres ganz normales Excel-Workbook (B)

1. Wechsele ich zwischen den Excel-WBs (A) und (B), läuft alles wie geschmiert.
2. Wechsele ich von (A) zu (W), geht auch noch alles.
3. Wechsele ich dann von (W) zurück nach (A), passiert gar nichts
4. Wechsele ich stattdessen von (W) nach (B) (!), dann melden mir meine Events, ich hätte von (A) (!) nach (B) gewechselt.
5. 4. Klappt nur, wenn ich die Tabelle in (W) ersteinmal abwähle (also irgendwo auf den Text klicke, und dann erst zu Excel zurückwechsele. Dann läuft es. Wenn ich aber die Tabelle in Word aktiviert lasse, und nach Excel wechsele, dann hakt es.

Wem fällt nochwas ein?!?

Gruß, Arno.

Anzeige
Re: Workbook-Wechsel inkl. Events
01.08.2002 14:00:26
Alex F
Hallo, (habe mich umbenannt wegen des anderen Alex)

klingt sehr wirr :-) aber ich glaube dir
folgen zu können. Was du bräuchtest, ist ein Ereignis,
das beim Applikationswechsel ausgelöst wird.
Das geht vielleicht nicht, da Word ja über OLE Excel benutzt
Ich weiss jetzt nicht genau wie das gehen soll,
schlage aber folgendes Ideen vor :
1)
Public WithEvents OLE As OLEObject

Private Sub OLE_GotFocus()
End Sub

Private Sub OLE_LostFocus()
End Sub

2)
Über Application.Caller bekommst du heraus wer
deine Prozedur gestartet hat.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige