Avatar billede rannug Nybegynder
30. august 2005 - 12:02 Der er 13 kommentarer og
1 løsning

Hvordan afsluttes Excel helt

Jeg har et problem, som jeg tydelig vis deler sammen med mange andre world wide. Hvem kan fortælle mig hvordan man standser Excel helt, når jeg har tilskrevet et regneark. Jeg kan se i Taskmanegeren, at Excel ikke er slået ihjel. Jeg har ikke problemer når jeg blot læser i regnearket.
Jeg bruger følgende kode:

Option Explicit
    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlArk As Object

Sub Skriv_til_regneark()
   
    On Error Resume Next
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlArk = xlApp.ActiveWorkbook.Worksheets(1)
    xlArk.Name = "Worksheet1"
    xlArk.Cells(1, 1).Value = ......

    xlArk.SaveAs MephistoFil
    xlBook.Close True
    xlApp.Quit
    Set xlArk = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing

End sub
....men Excel fortsætter med at køre.
Avatar billede sjh Nybegynder
31. august 2005 - 18:25 #1
åbner du excel før du bruger koden??
Avatar billede brynil Nybegynder
31. august 2005 - 20:06 #2
Jeg har leget lidt med en form og to buttons - Åben og Luk - og denne kode:

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

Private Sub Command1_Click()
Command1.Enabled = False
Command2.Enabled = True
   
    Set xlApp = CreateObject("Excel.Application")
    Set xlBook = xlApp.Workbooks.Add
    Set xlArk = xlApp.ActiveWorkbook.Worksheets(1)
   
    xlApp.Visible = True
    xlApp.ScreenUpdating = True

End Sub

Private Sub Command2_Click()
Command1.Enabled = True
Command2.Enabled = False
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing
   
End Sub

Umiddelbart ser det ud til at Excel lukker helt ned, dog ikke hvis det lukkes fra Excel. Så forsvinder Excel først fra taskmanager når der efterfølgende trykkes på Luk i VB formen.
Avatar billede brynil Nybegynder
31. august 2005 - 20:08 #3
Jeg har ikke testet med skrivning til ark, så måske det kan ændre forløbet.
Avatar billede brynil Nybegynder
31. august 2005 - 20:21 #4
Men der er vist noget med, at alle øvrige forbindelser til Excel skal være cuttet inden xlApp quittes.
Avatar billede rannug Nybegynder
01. september 2005 - 09:50 #5
sjh > Nej, Excel åbnes ikke før.
brynil > Problemet opstår kun, når jeg skriver til arket. Hvis jeg henter værdier afslutter Excel som det skal. (EXCEL.EXE er ikke nævnt i Taskmannegerens Processer).
I samme øjeblik VB-applikationen standses, stopper excel også. Problemet er, at excel ikke kan åbnes via dobbeltklik i stifinderen før VB-applikationen er stoppet.
Avatar billede brynil Nybegynder
01. september 2005 - 14:06 #6
Ok, men har du forsøgt at flytte xlApp.Quit ned som jeg beskrev 20.21. Mener at have læst et sted hos Ms at det kunne skabe problemer.
Avatar billede brynil Nybegynder
01. september 2005 - 16:51 #7
Enten forstår jeg ikke dit problem eller også ligger fejlen (måske)et sted i de data du skriver til arket eller har reference til (MephistoFil). Når jeg kører nedenstående og skriver til arket, er der ingen problemer som du har beskrevet:

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)
   
    xlArk.Name = "Ark1"
    xlArk.Cells(1, 1).Value = "Hallo"

    xlArk.SaveAs "C:\MephistoFil.xls"
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub
Avatar billede rannug Nybegynder
02. september 2005 - 13:09 #8
Hej brynil.
Min kode er stort set som din. Dog "starter" jeg Excel således:

    Set xlApp = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then
        'hvis Excel ikke er åbent, åbnes det her..
        Set xlApp = CreateObject("Excel.Application")
    End If
    Err.Clear

...men det skulle vel ikke gøre en forskel? Problemet er der stadig! Det er selvfølgelig vanskeligt for dig at hjælpe, hvis du ikke kan genskabe problemet.
Avatar billede rannug Nybegynder
02. september 2005 - 13:31 #9
....det er fordi jeg bruger noget VBA kode:

    Cells.Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
Når sletter disse linier er problemet løst!
Avatar billede brynil Nybegynder
02. september 2005 - 15:56 #10
Hvor har du den kode liggende? Skriver du den til Excel med VB6?
Avatar billede rannug Nybegynder
05. september 2005 - 08:58 #11
Koden ligger i samme procedure (Private Sub Command1_Click())
Ja, jeg skriver til Excel med den kode med VB6. Der mangler vel referancen til Excel?
Avatar billede mjsconsult Nybegynder
05. september 2005 - 11:22 #12
Jeg har haft lignende problemer med Excel. Fandt løsningen på nettet under diverse sites.

Årsagen til at rannuq's kode fejler og brynil's ikke gør, er at når man manipulere med Excel fra VB/VBA uden for Excel, da skal man deklerare samtlige objekter. Hvis man bruger en kommando som Cells.Select, uden en direkte reference til et worksheet object, så går det galt.

'''''''''''''''''''''''''
'Rigtig 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)
   
    xlArk.Cells.Select
    With xlArk.Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

    xlArk.SaveAs "C:\MephistoFil.xls"
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub
Avatar billede rannug Nybegynder
11. oktober 2005 - 09:32 #13
Det har løst en del af mine problemer, men Excel kører stadig i Taskmanegeren.
Men tak for hjælpen til alle!
Avatar billede mjsconsult Nybegynder
07. november 2005 - 10:15 #14
Hej Rannuq

Lige et par rettelser mere til koden. Nedenstående sub er eksekveret fra Access, og Excel findes ikke task manageren bagefter.

'''''''''''''''''''''''''
'Rigtig 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 = xlBook.Worksheets(1)
   
    Dim rg As Excel.Range
    Set rg = xlArk.Cells
    With rg
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

    xlArk.SaveAs "C:\MephistoFil.xls"
   
    Set xlArk = Nothing
    Set xlBook = Nothing
    xlApp.Quit
    Set xlApp = Nothing

End Sub
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