Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1096to1100
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

mal etwas schwieriges...

mal etwas schwieriges...
Tino
Hallo,
, wie kann ich die Maße vom Excel- Fenster ermitteln.
Das Normale Hauptfenster ist ja klar, kann ich Application so erfahren.

Sub Geo_Info()
With Application
.Width
.Height
.Top
.Left
End With
End Sub

Ich brauche aber die Maße der Excel- Datei.
Userbild
Hat da jemand etwas in der Schublade?
Danke und einen schönen Sonntag.
Gruß Tino

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: mal etwas schwieriges...
16.08.2009 10:53:28
Beverly
Hi Tino,
versuche es mal mit ActiveWindow


AW: mal etwas schwieriges...
16.08.2009 11:27:34
Tino
Hallo Beverly,
danke dies scheint zu funktionieren,
hätte ich auch selbst drauf kommen können, dies mal mit ActiveWindow zu versuchen.
Danke und noch einen schönen Sonntag.
Gruß Tino
AW: mal etwas schwieriges...
16.08.2009 11:03:39
Nepumuk
Hallo Tino,
so?
' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit

Private Declare Function GetWindowRect Lib "user32.dll" ( _
    ByVal hwnd As Long, _
    ByRef lpRect As RECT) As Long
Private Declare Function EnumChildWindows Lib "user32.dll" ( _
    ByVal hWndParent As Long, _
    ByVal lpEnumFunc As Long, _
    ByVal lParam As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _
    ByVal lpClassName As String, _
    ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32.dll" Alias "GetClassNameA" ( _
    ByVal hwnd As Long, _
    ByVal lpClassName As String, _
    ByVal nMaxCount As Long) As Long
Private Declare Function GetWindowText Lib "user32.dll" Alias "GetWindowTextA" ( _
    ByVal hwnd As Long, _
    ByVal lpString As String, _
    ByVal cch As Long) As Long
Private Declare Function GetWindowTextLength Lib "user32.dll" Alias "GetWindowTextLengthA" ( _
    ByVal hwnd As Long) As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Const GC_CLASSNAMEMSEXCEL = "XLMAIN"
Private Const GC_CLASSNAMEMSEXCEL7 = "EXCEL7"

Private udtRect As RECT

Public Sub Test()
    Dim lngHwnd As Long
    lngHwnd = FindWindow(GC_CLASSNAMEMSEXCEL, Application.Caption)
    Call EnumChildWindows(lngHwnd, AddressOf WndEnumChildProc, 0)
    With udtRect
        MsgBox "Left " & .Left & vbLf & "Top " & .Top & vbLf & _
            "Right " & .Right & vbLf & "Bottom " & .Bottom
    End With
End Sub

Private Function WndEnumChildProc(ByVal lngHwnd As Long, ByVal lngParam As Long) As Long
    Dim strTempWindowText As String * 512, strTempClassName As String * 50
    Dim strClassName As String, strWindowText As String
    Dim lngTextlen As Long
    lngTextlen = GetWindowTextLength(lngHwnd)
    Call GetWindowText(lngHwnd, strTempWindowText, lngTextlen + 1)
    strWindowText = Left$(strTempWindowText, InStr(1, strTempWindowText & vbNullChar, vbNullChar) - 1)
    Call GetClassName(lngHwnd, strTempClassName, 50)
    strClassName = Left$(strTempClassName, InStr(1, strTempClassName & vbNullChar, vbNullChar) - 1)
    If strClassName = GC_CLASSNAMEMSEXCEL7 Then
        If strWindowText = ThisWorkbook.Name Then
            Call GetWindowRect(lngHwnd, udtRect)
            WndEnumChildProc = 0
        End If
    Else
        WndEnumChildProc = 1
    End If
End Function

Gruß
Nepumuk
Anzeige
AW: mal etwas schwieriges...
16.08.2009 11:34:08
Tino
Hallo Nepumuk,
funktioniert leider nicht, bekomme als Ergebnis bei allen nur 0.
Beverly hat mir eine Möglichkeit aufgezeigt.
Danke und noch einen schönen Sonntag.
Gruß Tino
AW: mal etwas schwieriges...
16.08.2009 11:46:11
Nepumuk
Hallo Tino,
das von Karin reicht ja vollkommen. Es kann natürlich sein, dass Mikrosoft die Klassennamen bei Excel 2007 geändert hat, ich habs nur mit der 2003'er Version getestet. Außerdem müsste die Werte für Height und Width noch berechnet werden.
Aber nachdem du nach etwas komplizierten gefrag hast, dachte ich, ich liefere dir was kompliziertes. :-)
Gruß
Nepumuk
danke werde mal schauen
16.08.2009 11:56:10
Tino
Hallo,
ob ich es zum laufen bringe,
Du hast mir ja jetzt gesagt in welcher Richtung ich bei Deinem Code suchen muss.
Gruß Tino
Anzeige
habe den unterschied gefunden
16.08.2009 12:16:06
Tino
Hallo,
, der Klassenname ist gleich geblieben nur die Caption ist bei mir mit dem Zusatz "Kompatibilitätsmodus" ausgestattet.
Userbild
Habe die Zeile
If strWindowText = ThisWorkbook.Name Then
durch diese erweitert
If strWindowText = ThisWorkbook.Name Or strWindowText = ThisWorkbook.Name & " Kompatibilitätsmodus" Then
Danke
Gruß Tino
AW: habe den unterschied gefunden
16.08.2009 12:43:50
Nepumuk
Hallo Tino,
Mist, da bin ich auch schon mal darauf reingefallen. Allerdings nicht mit "Kompabilitätsmodus", sondern mit der Anzeige "Nichtkommerzielle Verwendung" in der Titelleiste.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige