Avatar billede pulv3n Nybegynder
17. februar 2012 - 15:32 Der er 9 kommentarer og
1 løsning

VBA procedure virker kun hver anden gang...

Hej

Jeg har oprettet en MS Access (2007) database som vedhjælp af sql queries henter data fra en Oracle database. Derefter skal disse data exporteres til en Excel fil. Dette går også meget godt, men kun hver anden gang. Det virker meget mystisk at en kode kun skulle virke hver anden gang.

Her er et udsnit af koden som giver problemerne:
---------------------------------------------------
Query = "StandardUdtræk"
XLpath = "C:\temp.xlsx"
Set oXL = CreateObject("Excel.Application")
        With oXL
            .Visible = True
            .Workbooks.Open (XLpath)
            .activewindow.Zoom = 80
            .Worksheets(Query).Activate
            .Cells(2, 1) = Val(Cells(2, 1)) 'DET ER DEN HER DER IKKE VIRKER!!           
            .Selection.autofilter
            .Columns("A:S").EntireColumn.AutoFit
            .Columns("U:Y").EntireColumn.AutoFit
            .Columns("AB:AP").EntireColumn.AutoFit
            .Columns("T:T").ColumnWidth = 45
            .Columns("Z:AA").ColumnWidth = 30
            .Columns("T:T").WrapText = True
            .Columns("Z:AA").WrapText = True
            .Save                         
        End With
               
        Set oXL = Nothing

---------------------------------------------------
Det eneste koden gør, er at formatere det indhold som allerede er eskporteret over i excel filen.
Problemet er, at hver ANDEN gang får jeg en fejlmeddelelse på linien der indholder teksten ".Cells(2, 1) = Val(Cells(2, 1))". Jeg har lavet mange forsøg og hvis jeg fjerner den linie virker koden fint hver eneste gang. Meget mystisk.

Her er fejlkoden:

Run-time error '1004':
Method 'Cells' of object '_Global' failed

Da koden afspilles fra Access, har jeg selvfølgelig oprettet referance til Microsoft Excel 12.0 Object Library.

Nogen der kan hjælpe ?

Vh

Simon
Avatar billede supertekst Ekspert
17. februar 2012 - 15:56 #1
.Cells(2, 1) = Val(Cells(2, 1)) 'DET ER DEN HER DER IKKE VIRKER!!   

der mangler et referencer . foran Cells - anden gang
Avatar billede pulv3n Nybegynder
18. februar 2012 - 09:35 #2
Jeg er ikke helt med på hvad du mener...  Hvordan kan der mangle en reference anden gang?
Avatar billede supertekst Ekspert
18. februar 2012 - 10:17 #3
.Cells(2, 1) = Val(Cells(2, 1)) 'DET ER DEN HER DER IKKE VIRKER!!   
--------------------------> her mangler punktum
Avatar billede supertekst Ekspert
18. februar 2012 - 10:18 #4
.Cells(2, 1) = Val(.Cells(2, 1)) 'nu er der punktum
Avatar billede pulv3n Nybegynder
18. februar 2012 - 12:05 #5
Selvfølgelig !  Der virker nu :) mange tak for hjælpen!!!
Avatar billede pulv3n Nybegynder
09. marts 2012 - 09:57 #6
Hej igen,

Nu har jeg et lignende problem.
Jeg vil gerne tjekke om et addin ved navn "XLcubed" er installeret. Hvis det er tilfældet, så skal det deaktiveres mens koden køre. Grunden til dette, er at addin'et er årsag til flere fejl. Problemet er bare at det kun er nogle gange at nedenstående kode virker. Fejlen opstår når linien som indeholder ".AddIns("XLcubed").Installed = False" læses. Føglende vejl opstår:
Run-time error '-2147417838 (80010112)':
Method 'Installed' of object 'AddIn' failed

---------------------------------------------------
XL = "c:\temp.xlsx"

Set oXl = CreateObject("Excel.Application")

With oXl
            .Workbooks.Open (XL)
         
            If .AddIns("Xlcubed").Installed = True Then
                .AddIns("XLcubed").Installed = False
            End If
         

            'Gør et eller andet her

            If .AddIns("Xlcubed").Installed = False Then
                .AddIns("XLcubed").Installed = True
            End If
End With
Avatar billede supertekst Ekspert
09. marts 2012 - 10:25 #7
Prøv at indsætte denne linje før

On Error Resume Next

            If .AddIns("Xlcubed").Installed = True Then
                .AddIns("XLcubed").Installed = False
            End If
Avatar billede pulv3n Nybegynder
09. marts 2012 - 15:35 #8
Det hjælper desværre ikke. Fejlen kommer stadig. Det virker besynderligt eftersom den burde ignorere fejlen og fortsætte koden.
Avatar billede pulv3n Nybegynder
09. marts 2012 - 15:39 #9
Derudover, hvis jeg manuelt dissabler XLcubed addinn'et, så fejler den stadig på koden inde i if-sætningen. Den burde ikke evaluere koden inde i if-sætningen hvis addin'et er slået fra....
Avatar billede supertekst Ekspert
09. marts 2012 - 15:46 #10
har ingen bud p.t.
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



IT-JOB

Capgemini Danmark A/S

Project Manager

Rohde & Schwarz Technology Center A/S

FPGA-udvikler

Cognizant Technology Solutions Denmark ApS

Kinaxis Sr. Solution Consultant

Pharma Nord

PHP backend-udvikler