Avatar billede hphansen Novice
13. november 2017 - 14:00 Der er 2 kommentarer og
1 løsning

Workbooks collection i Excel 2013

Hej.

Jeg har lavet noget VBA kode i Excel 2013, som looper gennem alle åbne Excel-filer, som er åbne. Koden ser sådan ud:

Dim CountWb As Integer
Dim bookCount
Dim Invalid, Missing, SumofOmplacering As Integer
AWB = ThisWorkbook.Name

CountWb = 0

For Each bookCount In Workbooks
    If bookCount.Name <> AWB Then
        book = bookCount.Name
    End If
    CountWb = CountWb + 1
Next bookCount

osv osv...

Problemet med dette er, at i Excel 2013, tæller det ikke med, hvis man samtidig har et regneark åben i Excel 2007 (begge to er på min maskine), så linjen 'For Each bookCount in Workbooks..' ser kun åbne regneark i Excel 2013.

Er der nogen af jer Eksperter, som kan fortælle mig, hvordan jeg kan tælle 2007-regnearket med (og ja, det SKAL være 2007 for det specifikke regneark..)?

Al hjælp er påskønnet.

Mvh

H.P. Hansen
Avatar billede garrett Seniormester
13. november 2017 - 14:48 #1
Du er nok nødt til at lave et object med Excel 2007 som f.eks. "Set xlApp = CreateObject("Excel.Application.11")" åbne din workbook med det object og lade det indgå i din sammentælling ved at loope gennem både "Application.Workbooks" & "xlApp.Workbooks" ?
Avatar billede hphansen Novice
13. november 2017 - 15:35 #2
Hej garrett.

Tak.

Hvis jeg kører min VBA-kode i Excel 2013 og den anden Excel-fil allerede ER åben i Excel 2007, hvordan skal koden så se ud (jeg tænker ikke jeg skal køre en CreateObject...)?
Avatar billede Dan Elgaard Ekspert
13. november 2017 - 15:45 #3
Du skal benytte kald til Windows API.

Lav et loop, der gennemløber alle processer/vinduer via kald til 'GetWindow'.
Hvis pågældende process/vindue er et Excel applikation, så gennemløb alle åbne Workbooks i pågældende Excel applikation.

Lidt omstændigt, men ikke umuligt, og jeg tror, det er den bedste (eneste?) måde, at gøre det på.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester