30. august 2005 - 12:02Der 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
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.
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.
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)
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.
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)
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
Synes godt om
Ny brugerNybegynder
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.