Avatar billede -l_jogge_l- Nybegynder
19. april 2004 - 13:12 Der er 16 kommentarer og
1 løsning

Min Excel hænger efter lukning

Jeg har et VB 6.0 Program, som smider data til et Excel ark, Den åbner et excel ark. Og smider over... MEN lukker jeg Excelfilen, og prøver igen.... så hænger den... kun lige den øverste del af Excelprogrammer kommer frem på skærmen!

Hvad kan der være galt???
Avatar billede martin_moth Mester
19. april 2004 - 14:08 #1
Du får ikke nedlagt excel-referencen ordentligt?

Kan vi se (den væsenlige) kode?
Avatar billede -l_jogge_l- Nybegynder
19. april 2004 - 14:17 #2
Dim xlApp As Excel.Application
Dim xlWb As Excel.Workbook
Dim xlWs As Excel.Worksheet
Dim ExportFil As String

Dim Status As String
Dim NewStatus As String
   
ExportFil = ("I:\CRM\DATA\export\TilbudsExcel.xls")
 
Set xlApp = Excel.Application
xlApp.Workbooks.Open ExportFil
xlApp.Visible = True

xlApp.ActiveWorkbook.ActiveSheet.Range("Udskrevet_af") = FRM_Start.LBF_BrugerNavn.Caption
xlApp.ActiveWorkbook.ActiveSheet.Range("Dato") = Format(Now, "dd-mm-yyyy")

For X = 1 To 5000
   
If xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 0) = "" Then

    If FRM_TilbudsRapportOversigt.CHK_Pris.Value = 1 Then
        Dim Pris As String
        Pris = rsExcelRapport("Pris")
       
        If Val(Pris) >= FRM_TilbudsRapportOversigt.TXT_Pris.Text Then
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 4) = rsExcelRapport("Pris")
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 0) = rsExcelRapport("Tilbudsnummer")
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 1) = rsExcelRapport("cboSalgkoordinator")
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 2) = rsExcelRapport("txtKontaktPerson")
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 3) = rsExcelRapport("KundeRef")
            Status = rsExcelRapport("cboTilbudsstatus")
           
                If Status = "Aceepteret" Then
                    NewStatus = "W"
                Else
                    NewStatus = "O"
                End If
            xlApp.ActiveWorkbook.ActiveSheet.Range("Start").Offset(X, 5) = NewStatus
        Else
        End If
Next X
End sub
Avatar billede -l_jogge_l- Nybegynder
19. april 2004 - 14:18 #3
Sådan her ser den ud.....
Avatar billede martin_moth Mester
19. april 2004 - 14:30 #4
Husk ALTID at sætte dine objekter = nothing efter brug. Det kan måske løse problemet
Avatar billede -l_jogge_l- Nybegynder
19. april 2004 - 15:46 #5
Ser ikke rigtigt ud til at virke.....
Avatar billede martin_moth Mester
19. april 2004 - 15:50 #6
har du nedlagt ALLE dine objekter?
Jeg kan i øvrigt ikke se hvor du lukker excelfilen henne, selvom du skriver at du gør det - har du ikke glemt den kodestump?

Så vidt jeg husker: xlApp.Quit

PS: Hvad bruger du disse linier til?

Dim xlWb As Excel.Workbook
Dim xlWs As Excel.Worksheet
Avatar billede -l_jogge_l- Nybegynder
19. april 2004 - 15:54 #7
Jamen det dur heller ikke at den lukker Excel efter at have exporteret til den....
Avatar billede martin_moth Mester
19. april 2004 - 15:57 #8
?
Avatar billede martin_moth Mester
19. april 2004 - 15:57 #9
Du skriver at du lukker Excel filen - hvor gør du det? Hvordan?
Avatar billede -l_jogge_l- Nybegynder
20. april 2004 - 08:46 #10
På det lille kryds i højre hjørne.... DOG! Hvis jeg lukkker den ene Workbook først og derefter selve Excel.. så er der ingen problemer!
Avatar billede martin_moth Mester
20. april 2004 - 09:32 #11
Du opretter en forbindelse til arket i din kode, men lukker "manuelt". Dårlig ide!
Avatar billede martin_moth Mester
20. april 2004 - 09:33 #12
Du kunne jo bruge .Close
Avatar billede -l_jogge_l- Nybegynder
20. april 2004 - 10:17 #13
Jamen jeg skal jo trække en rapport ud til Excel... så dur det jo ikke at jeg bare lukker den med det samme igen bagefter!
Avatar billede martin_moth Mester
20. april 2004 - 10:33 #14
Det har jeg jo heller ikke sagt at du skal
Avatar billede martin_moth Mester
20. april 2004 - 10:34 #15
Du skriver:
" Jeg har et VB 6.0 Program, som smider data til et Excel ark, Den åbner et excel ark. Og smider over... MEN lukker jeg Excelfilen, og prøver igen.... så hænger den"

Forslag til løsning:

Brug .Close INDEN du fosøger at åbne igen
Avatar billede danauktion Nybegynder
28. april 2004 - 00:25 #16
Personlig ville jeg ændre i logikken således at du først smider data over i dit excel, gemmer filen i en midlertidig fil, lukker filen og quit'er excel.
Herefter ville jeg i koden shell'e excel med dette filnavn som parameter.
Shell vil kun have en reference til selve processen og vil du på denne måde adskille din applikation fra excel/regneark.

På denne måde vil din applikation ikke have fat i excel, som vil køre som en selvstændig applikation :-)

Man bør altid prøve at adskille automatikken og de manuelle procedurer fra hinanden, så der ingen tvivl er om hvem som bestemmer (i dette tilfælde over regneark og excel-program)
Avatar billede -l_jogge_l- Nybegynder
17. maj 2004 - 15:52 #17
Jeg takker for dit svar..... prøver mig lidt frem!
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