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

Andere Excel Applikation finden und ändern

Andere Excel Applikation finden und ändern
18.07.2005 00:55:17
Norman
Hallo alle,
ich weiss, dass ich's schon gelesen hab, finds aber nimmer.... :(
Ich habe eine Excel-Instanz offen, in der sich eine geöffnete Datei befindet.
Ferne habe ich ein weiters Excel (eine weitere Instanz) offen, die jetzt das Excel-Sheet des "anderen geöffneten" Excel per VBA verändern soll... Wie finde ich die andere Applikation und damit das andere Worksheet? (Ich rede jetzt nicht von Zellverknüpfungen sondern von VBA-Code!!!!)
Ich meine zu wissen, dass ich sämtliche geöffneten Excel-Applikationen "durchgehen" kann und dann das gesuchte Sheet mittels eindeutige Indizien (z.B. einem bestimmenten Text in A1) adressieren kann.
Irgendwie geht's, weiss jemand wie?
Habe so angefangen:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function EnableWindow Lib "user32" _
(ByVal hwnd As Long, ByVal bEnable As Long) As Long
Private function FindOutputWorksheet() as excel.worksheet
Dim hwndXL&
hwndXL = FindWindow("XLMAIN", Application.Caption)
If hwndXL 0 Then
EnableWindow hwndXL, 1
' Nu hab ich's enabled, aber wie komme ich vom Handle an das Workbook?
End If
End Sub

Damit habe ich die Applikation, aber wie komme ich vom hwndXL an das Workbook?
Gruß und Danke!!!
Norman

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Andere Excel Applikation finden und ändern
18.07.2005 08:49:59
Nepumuk
Servus,
du musst über die Windowhandle den Fenstertitel auslesen. Wenn du den aber per Makro änderst (Application.Caption / ActiveWindow.Caption) hast du schlechte Karten. Aus dem Fenstertitel holst du dir den Namen der Mappe. Dann musst du diese auf deinen Laufwerken suchen. Wenn diese Mappe unter dem selben Namen in verschiedenen Ordnern existiert, musst du prüfen welche offen ist. Damit hast du den kompletten Dateinamen (Pfad). Auf diesen kannst du nun mit GetObject zugreifen. Dadurch bekommst du Zugriff auf die andere Instanz und kannst dann alle in dieser Instanz geöffneten Mappen ansprechen.
Achtung: Mit hwndXL = FindWindow("XLMAIN", Application.Caption) bekommst du die Windowhandle der Mappe, in der sich der Code befindet. Du musst alle Fenster durchlaufen um an die richtige zu kommen.
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
AW: Andere Excel Applikation finden und ändern
19.07.2005 18:57:23
Norman
Hi Nepumuk,
vielen Dank für die Antwort! Klingt soweit plausibel. Allerdings habe ich das Problem, dass die Datei noch nicht gespeichert ist, es handelt sich um eine neue Arbeitsmappe, die aber meinem 2. Excel-Sheet (das auf die erste Mappe zugreifen soll) namentlich (also z.B. Mappe1 etc.) bekannt ist.
Komme ich nicht vom hwndXL irgendwie auf Application?
Gruß und Danke
Norman
AW: Andere Excel Applikation finden und ändern
19.07.2005 19:07:05
Nepumuk
Hallo Norman,
dann ist es viel einfacher:
Public Sub test()
    Dim objApp As Object
    Dim intIndex As Integer
    On Error Resume Next
    For intIndex = 1 To 10 'sucht nach Mappe1 bis Mappe10
        Set objApp = GetObject("Mappe" & CStr(intIndex))
        If Err.Number = 0 Then Exit For
        Err.Clear
    Next
    On Error GoTo 0
End Sub

Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
SUPER, das funzt bestens!
19.07.2005 23:01:00
Norman
Genial Nepumuk,
manchmal ist es einfach wenn man es weiss :)
Vielen Dank!!!
Gruß
Norman

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige