Avatar billede Falentin Seniormester
07. november 2018 - 18:48 Der er 11 kommentarer og
1 løsning

Åbne excel ark i VBA

Jeg skal lave et script, hvor jeg fra Word åbner et excel-regneark. Det skal være dynamisk, da selve worddokumentet vil ligge i en undermappe, og excelarket vil ligge i den overordnede mappe, derfor kan jeg ikke direkte pege på stien.

Desværre kan VBA ikke finde regnearket, da jeg får en 1004-fejl.

VBA siger at den ikke kan finde arket og henviser til stien: c:\Users\krvbe\Desktop\Test Mappe-SLET IKKETest Strukturskema 2.0

Men stien er helt konkret  c:\Users\krvbe\Desktop\Test Mappe-SLET IKKE\Test Strukturskema 2.0, dvs. der mangler en "\" mellem IKKE og Test.

Sub OpenFiles()
Dim MyFolder As String
Dim MyFile As String
MyFolder = Left(ActiveDocument.Path, InStrRev(ActiveDocument.Path, "\") - 1)
MyFile = Dir(MyFolder & "\*.XLSM")
Do While MyFile <> ""
If MyFile Like "*Strukturskema*" Then
Workbooks.Open FileName:=MyFolder & MyFile
MyFile = Dir
End If
Loop
End Sub
07. november 2018 - 19:07 #1
har du prøvet
Workbooks.Open FileName:=MyFolder & "\" & MyFile
Avatar billede Falentin Seniormester
07. november 2018 - 19:27 #2
Nu får jeg ingen fejlmeddelse, men til gengæld står markøren blot og kører rundt, og der sker intet.
07. november 2018 - 20:13 #3
Det er fordi du skal have dir ud af if sætningen

If MyFile Like "*Strukturskema*" Then
Workbooks.Open FileName:=MyFolder & "\" &  MyFile
End If
MyFile = Dir
Avatar billede Falentin Seniormester
07. november 2018 - 20:19 #4
Nu kom jeg lidt længere, men får til gengæld fejlen:

run-time error ´91. Object variable or with block variable not set?
07. november 2018 - 20:29 #5
I hvilken linje?
Avatar billede Falentin Seniormester
07. november 2018 - 20:37 #6
Jeg blev gjort opmærksom på, at det skulle være activeworkbook i stedet for activedocument, så det har jeg tilrettet, men det er linje 4 der går skævt.

1 Sub OpenFiles1()
2 Dim MyFolder As String
3 Dim MyFile As String

4 MyFolder = Left(ActiveWorkbook.Path, InStrRev(ActiveWorkbook.Path, "\") - 1)
5 MyFile = Dir(MyFolder & "\*.XLSM")
6 Do While MyFile <> ""

7 If MyFile Like "*Strukturskema*" Then
8 Workbooks.Open FileName:=MyFolder & "\" & MyFile


9 End If

10 MyFile = Dir

11 Loop
12 End Sub
07. november 2018 - 20:42 #7
Jeg kan ikke reproducere fejlen.
Kan du sende mig filen?
Brug evt. https://www.it-fjernundervisning.dk/info/hj%C3%A6lp
Avatar billede Falentin Seniormester
07. november 2018 - 20:52 #8
Jeg sender til dig på Fjernundervisning.
07. november 2018 - 21:08 #9
Du mangler reference til Excel objekt samlingen og dernæst skal du have et Excel app objekt

Sub OpenFiles2()
    Dim MyFolder As String
    Dim MyFile As String
   
    Dim Excelapp As Excel.Application
    Set Excelapp = New Excel.Application
    Excelapp.Visible = True
   
    MyFolder = Left(ActiveDocument.Path, InStrRev(ActiveDocument.Path, "\") - 1)
    MyFile = Dir(MyFolder & "\*.xlsm")
    Do While MyFile <> ""
        If MyFile Like "*Strukturskema*" Then
            Excelapp.Workbooks.Open FileName:=MyFolder & "\" & MyFile
        End If
        MyFile = Dir
    Loop
End Sub


Refencen sætter du i Tools references - find Microsoft Excel og sæt hak
Avatar billede Falentin Seniormester
07. november 2018 - 21:14 #10
Jamen, for filen da, du er en lifesaver. Så mange tak for hjælpen igen. Man stirrer sig jo blind på det, og overser det åbenlyse :-)
07. november 2018 - 21:17 #11
Så lidt :)
Det var først da jeg så dit dokument at jeg blev opmærksom på, at udfordringne var i Word - der er så meget Excel her...
Avatar billede Falentin Seniormester
07. november 2018 - 21:19 #12
Ja, jeg dribler lidt mellem Word og Excel, og burde jo have indset at jeg skulle have referencer, især da du har hjulpet mig før med det:-) Men rigtig god aften og tak igen.
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