Sub test1() Dim Wb As Workbook For Each Wb In Workbooks Debug.Print Wb.Name Next WbEnd Sub
Sub test2() Dim Ap As Excel.Application, Wb As Workbook For Each Ap In ' вот здесь загвоздка не могу понять среди чего перебирать... For Each Wb In Workbooks Debug.Print Wb.Name Next Wb next ...End Sub
Private Declare Function AccessibleObjectFromWindow& Lib "oleacc.dll" _ (ByVal Hwnd&, _ ByVal dwId&, _ riid As GUID, _ xlwb As Object) Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" _ (ByVal hWnd1 As Long, _ ByVal hWnd2 As Long, _ ByVal lpsz1 As String, _ ByVal lpsz2 As String) _ As Long Declare Function SendMessage Lib "user32" Alias "SendMessageA" _(ByVal Hwnd As Long, ByVal wMsg As Integer, _ByVal wParam As Integer, ByVal lParam As Integer) As Integer Declare Function ShowWindow Lib "user32" _(ByVal Hwnd As Long, ByVal y As Integer) As BooleanType GUID Data1 As Long Data2 As Integer Data3 As Integer Data4(0 To 7) As ByteEnd TypePrivate Sub SetGUID(ByRef ID As GUID, Optional VerRus As Boolean = True)If VerRus ThenWith ID .Data1 = &H20400 .Data2 = &H0 .Data3 = &H0 .Data4(0) = &HC0 .Data4(1) = &H0 .Data4(2) = &H0 .Data4(3) = &H0 .Data4(4) = &H0 .Data4(5) = &H0 .Data4(6) = &H0 .Data4(7) = &H46 End WithElseWith ID .Data1 = &H90140000 .Data2 = &H16 .Data3 = &H409 .Data4(0) = &H0 .Data4(1) = &H0 .Data4(2) = &H0 .Data4(3) = &H0 .Data4(4) = &H0 .Data4(5) = &HF .Data4(6) = &HF1 .Data4(7) = &HCE End With End IfEnd Sub Sub XLref() Dim xl As Excel.Application Dim ob As Object Dim XLMAIN, XLDESK, EXCEL7 As Long Dim G As GUID SetGUID G XLMAIN = FindWindowEx(0, 0, "XLMAIN", vbNullString) While XLMAIN <> 0 XLDESK = FindWindowEx(XLMAIN, 0, "XLDESK", vbNullString) EXCEL7 = FindWindowEx(XLDESK, 0, "EXCEL7", vbNullString) If EXCEL7 <> 0 Then ShowWindow XLMAIN, 8 ShowWindow XLDESK, 8 'SW_SHOWNA=8 AccessibleObjectFromWindow EXCEL7, &HFFFFFFF0, G, ob Set xl = ob.Application For Each Wb In xl.Workbooks Debug.Print Wb.Name Next Wb End If XLMAIN = FindWindowEx(0, XLMAIN, "XLMAIN", vbNullString) Wend End Sub
.Data1 = &H20400 .Data2 = &H0 .Data3 = &H0 .Data4(0) = &HC0 .Data4(1) = &H0 .Data4(2) = &H0 .Data4(3) = &H0 .Data4(4) = &H0 .Data4(5) = &H0 .Data4(6) = &H0 .Data4(7) = &H46