Avatar billede tt2002 Nybegynder
02. september 2005 - 19:42 Der er 6 kommentarer og
1 løsning

excel: sheet exists-function uden at åbne filen

Jeg søger en funktion, som tjekker om et sheet med et bestemt navn eksisterer i en bestemt navngivet fil.
Funktionen skal IKKE åbne filen (og evt. lukke igen efter søgning).

Jeg har bl.a. set http://eksperten.dk/spm/384732 (sheet-exists i en aktiv workbook) og http://eksperten.dk/spm/23945 (tjek om fil eksisterer uden at åbne denne), men har ikke selv evnerne til at kombinere disse. Håber det kan lade sig gøre.
Avatar billede nielle Nybegynder
02. september 2005 - 20:54 #1
Det kan man ikke. Du kan ikke se indholdet af en fil uden at åbne den. Og det gør det første eksempel i øvrigt faktisk også.
Avatar billede tt2002 Nybegynder
02. september 2005 - 21:01 #2
ok.... men det gør sådan set heller ikke noget at computeren åbner og lukker filen for at se på den, sålænge dette ikke er fysisk synligt.

Følgende kode fra spm. 23945 tjekker om filen eksisterer uden at man kan se at den åbner og lukker den.

Function FilEksisterer(ByVal FilNavn As String) As Boolean
    Dim f As Integer
    f = FreeFile
    On Error GoTo FindesIkke
    Open FilNavn For Input As #f
    FilEksisterer = True
    Close #f
    Exit Function
FindesIkke:
    FilEksisterer = False
End Function

Jeg er interesseret i noget lignende, blot skal den tjekke om sheet'et eksisterer i stedet for filen.
Avatar billede nielle Nybegynder
02. september 2005 - 21:11 #3
Desværre kan jeg heller ikke lige komme på med en løsning - den kode som finder sheetet er skrevet i VBA og er altså beregnet til at blive afviklet fra selve Excel-applikationen. Den kan sikkert tilpasses til at køres ”udefra” men det rækker min ekspertise ikke lige til. :^|
Avatar billede brynil Nybegynder
03. september 2005 - 08:26 #4
Prøv med denne kode:

Private xlApp As Excel.Application
Private xlBook As Object
Private xlArk As Object

Private Sub Command1_Click()
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
   
    Set xlArk = xlApp.ActiveWorkbook.Worksheets(1)
    Set xlBook = xlApp.Workbooks.Open("c:\test.xls")

    xlApp.Visible = False

    For Each xlArk In xlApp.ActiveWorkbook.Worksheets
        If xlArk.Name = "Ark2" Then
            MsgBox (xlArk.Name) & " fundet!"
            Exit For
        End If
    Next
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub
Avatar billede brynil Nybegynder
03. september 2005 - 08:47 #5
I en funktion med kald fra fx: CheckArk ("Ark2")

Private xlApp As Excel.Application
Private xlBook As Object
Private xlArk As Object

Public Function CheckArk(arkNavn As String)

    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
   
    Set xlArk = xlApp.ActiveWorkbook.Worksheets(1)
    Set xlBook = xlApp.Workbooks.Open("c:\test.xls")

    xlApp.Visible = False

    For Each xlArk In xlApp.ActiveWorkbook.Worksheets
        If xlArk.Name = arkNavn Then
            MsgBox (xlArk.Name) & " fundet!"
            Exit For
        End If
    Next
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Function
Avatar billede tt2002 Nybegynder
09. september 2005 - 20:00 #6
brynil
det virker som det skal.... hvis du smider et svar, har jeg nogle point til dig!
Avatar billede brynil Nybegynder
09. september 2005 - 20:02 #7
Fornemt-tak!
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
Kategori
Kurser inden for grundlæggende programmering

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