Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Excel Instanz wird nicht beendet

Frage Microsoft Microsoft Office

Mitglied: DeamonSadi

DeamonSadi (Level 1) - Jetzt verbinden

09.03.2011, aktualisiert 16:52 Uhr, 4464 Aufrufe, 5 Kommentare

Hallo Forumgemeinde!!!
Bin total neu und einfach aufgeschmissen!!! ^^
Mein Vorgänger hat eine Access Abfrage von Excel Dateien gemacht und ich soll dies Weiterpflegen!!!

Leider hat er mir auch einige Fehler hinterlassen!
Der gravierenste Fehler ist folgender:
Mein ImportMod funktioniert einwandfrei soweit ich die Ergebnisse der Auswertungen beurteilen kann!
Leider wenn ich mehr Importier wird mein System und das öffnen langsamer,
da immer mehr Excel Instanzen offen sind und sich nach dem Import nicht mehr schließen!
Auch das lesen von etlichen Forenbeiträgen auch in anderen Foren hat mich nicht weitergebracht!
Hab schon fast alles umdeklariert aber es Funktioniert mit den beschreibungen nicht!

Hilfe!!


Import Mod:
01.
Option Compare Database 
02.
 
03.
Sub Import(Path As String, Tabelle As String, ByRef Datum As Date) 
04.
On Error GoTo Err_Handler 
05.
    Dim app As Excel.Application 
06.
    Dim wbk As Excel.Workbook 
07.
    Dim wks As Excel.Worksheet 
08.
    Dim rsKat As DAO.Recordset 
09.
    Dim rsCode As DAO.Recordset 
10.
    Dim rsTabelle As DAO.Recordset 
11.
    Dim zeile As Integer 
12.
    Dim zSumme As Long ' Zeilen summe, wenn diese 0 ist kommt immer eine neue Kategorie 
13.
        
14.
 
15.
    'Warnmeldung ausschalten 
16.
    DoCmd.SetWarnings False 
17.
     
18.
    'Prüfen das der Pfad nicht leer ist 
19.
    If Path <> "" Then 
20.
     
21.
        'Sanduhr 
22.
        DoCmd.Hourglass True 
23.
         
24.
        'Excel öffnen 
25.
        Set app = New Excel.Application 
26.
        Set wbk = app.Workbooks.Open(Path) 
27.
        Set wks = wbk.Worksheets("Sheet1") 
28.
         
29.
        'Recordsets init 
30.
        Set rsKat = CurrentDb.OpenRecordset("Kategorie", dbOpenDynaset) 
31.
        Set rsCode = CurrentDb.OpenRecordset("Code", dbOpenDynaset) 
32.
        Set rsTabelle = CurrentDb.OpenRecordset(Tabelle, dbOpenDynaset) 
33.
        zSumme = 0 
34.
         
35.
        'Anzahl der Spalten bestimmen 
36.
        Select Case Tabelle 
37.
            Case "Anfragen" 
38.
                Spalten = 27 
39.
            Case "CBDaten" 
40.
                Spalten = 20 
41.
            Case "Kunde" 
42.
                Spalten = 27 
43.
        End Select 
44.
                 
45.
        'Zielen durchlaufen und in die Datenbank schreiben 
46.
        zeile = 3 
47.
        Do While wks.Cells(zeile, 1) <> "Summe Fachteams" 
48.
            'K_ID heraussuchen 
49.
            If zSumme = 0 Then 
50.
                'Prüfen ob es diese Kategorie schon gibt 
51.
                Lookup = DLookup("K_ID", "Kategorie", "Kategorie Like '" & wks.Cells(zeile, 1) & "'") 
52.
                If Lookup > 0 Then 
53.
                    K_ID = Lookup 
54.
                Else 
55.
                    'Neue Kategorie anlegen 
56.
                    With rsKat 
57.
                        .AddNew 
58.
                        !Kategorie = wks.Cells(zeile, 1) 
59.
                        K_ID = !K_ID 
60.
                        wbk.Update 
61.
                    End With 
62.
                End If 
63.
                 
64.
                zSumme = Zeilensumme(wks, zeile) 
65.
            Else 
66.
                zSumme = zSumme - Zeilensumme(wks, zeile) 
67.
                 
68.
                'Codegruppe ermitteln 
69.
                 Lookup = DLookup("C_ID", "Code", "K_ID = " & K_ID & " AND Code Like '" & wks.Cells(zeile, 1) & "'") 
70.
                'Prüfen ob der Code schon vorhanden ist, sonst anlegen 
71.
                If Lookup > 0 Then 
72.
                    C_ID = Lookup 
73.
                Else 
74.
                    With rsCode 
75.
                    .AddNew 
76.
                    !K_ID = K_ID 
77.
                    !Code = wks.Cells(zeile, 1) 
78.
                    C_ID = !C_ID 
79.
                    .Update 
80.
                    End With 
81.
                End If 
82.
                 
83.
                'Anfragendaten einfügen 
84.
                With rsTabelle 
85.
                    .AddNew 
86.
                    !Monat = Datum 
87.
                    !C_ID = C_ID 
88.
                    For i = 2 To Spalten 
89.
                       .Fields(i) = wks.Cells(zeile, i) 
90.
                    Next i 
91.
                    .Update 
92.
                End With 
93.
             End If 
94.
              
95.
            zeile = zeile + 1 
96.
        Loop 
97.
         
98.
        'Aufräumen 
99.
        rsKat.Close 
100.
        Set rsKat = Nothing 
101.
        rsCode.Close 
102.
        Set rsCode = Nothing 
103.
        rsTabelle.Close 
104.
        Set rsTabelle = Nothing 
105.
        'Sanduhr 
106.
        DoCmd.Hourglass False 
107.
         
108.
    End If  
109.
     
110.
    'Wanrmeldungen wieder anschaltenen, man weiß ja nie 
111.
    DoCmd.SetWarnings True 
112.
Exit_Err_Handler: 
113.
    Exit Sub 
114.
     
115.
Err_Handler: 
116.
 
117.
    MsgBox "Es konnten Zeilen nicht importiert werden. Ist die Datei vielleicht schon Importiert?(" + Err.Description + " " + Err.Source + ")" 
118.
 
119.
     
120.
    DoCmd.Hourglass False 
121.
    Resume Exit_Err_Handler: 
122.
 
123.
End Sub 
124.
' Berechnet aus einer Zeile eine Zeilensumme 
125.
Function Zeilensumme(wks As Excel.Worksheet, zeile As Integer) As Long 
126.
    'Es ist ausreichend nur die Spalte Rückfragen ohne Gesrpäche und Rufzeit zu addieren, da ich noch keine Zeile gefunden habe 
127.
    'wo alle 3 Spalten null sind. Sollte das irgendwann einmal auftrauchen muss hier dann noch eine weiter Spalte mit eingerechnet werden 
128.
    'Für Den CB noch die Spalte 15 die nie Null ist 
129.
    Zeilensumme = wks.Cells(zeile, 10) _ 
130.
                + wks.Cells(zeile, 11) _ 
131.
                + wks.Cells(zeile, 15) _ 
132.
                + wks.Cells(zeile, 16) 
133.
                 
134.
End Function
Ich hoff der Fehler steckt irgendwo da drin!

[Edit Biber] Codeformatierung [/Edit]^^
Mitglied: TsukiSan
09.03.2011 um 13:55 Uhr
Hallo DeamonSadi,

wenn du deine Zeilen mal als CODE formatieren könntest, dann könnte man dir sagen, in welcher Zeile das
01.
wbk.close
fehlt. Das würde deine Exceltabelle im Anschluss wieder schließen.

Gruss
Tsuki
Bitte warten ..
Mitglied: DeamonSadi
09.03.2011 um 14:39 Uhr
Habs jetzt so eingefügt nach gefühl!!!

Da sollt alles vorbei sein und da ist glaub ich das close Sinnvoll!!!
Und danke für deine schnelle Antwort!!!
Mich würd aber auch Interessieren ob dies die selbe Stelle ist wie bei dir!!!

Mit freundlichen Grüßen

Sadi

End If

'Wanrmeldungen wieder anschaltenen, man weiß ja nie


wbk.close


DoCmd.SetWarnings True
Exit_Err_Handler:
Exit Sub

Err_Handler:

MsgBox "Es konnten Zeilen nicht importiert werden. Ist die Datei vielleicht schon Importiert?(" + Err.Description + " " + Err.Source + ")"


DoCmd.Hourglass False
Resume Exit_Err_Handler:

End Sub

Ps.: Ein Microcontroller in Assembler wär mir Tausendmal lieber
Bitte warten ..
Mitglied: DeamonSadi
09.03.2011 um 14:43 Uhr
LOL also bei 24 Dateien sind immer noch 2 Instantzen offen geblieben
Bitte warten ..
Mitglied: RDiller
09.03.2011 um 16:47 Uhr
Hallo Sadi,

Ganz am Schluß musst Du die Objekte auch wieder "leeren", d.h. folgender Code fehlt:

Set wks = Nothing
Set wbk = Nothing
Set app = Nothing



Achtung, das muss in jedem möglichen Exit stehen, d.h. auch in
Exit_Err_Handler:

Achtung, Du hast Exit_Err_Handler: 2 x deklariert!!!!!
Bitte warten ..
Mitglied: DeamonSadi
10.03.2011 um 07:32 Uhr
Guten Morgen,
also ich habs jetzt wieder voll getesten mit allen Daten die ich hatte!!!
Es klappt!!! ^^
Hab dies so unter Block
'Aufräumen
und in
Err_Handler
stehen:

'Excel schließen

Set wks = Nothing
wbk.Close
Set wbk = Nothing
Set app = Nothing

Hoff wenn jemand auch so ein Problem hat kann er sich damit weiterhelfen!!!
Und Danke nochmal für die schnelle Hilfe!!!

LG

Euer Sadi
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Microsoft Office
Excel 2007 jedes Fenster in extra Instanz (7)

Frage von xbast1x zum Thema Microsoft Office ...

VB for Applications
Excel VBA Sortierung von Daten (5)

Frage von easy4breezy zum Thema VB for Applications ...

Microsoft Office
gelöst Excel-Formel oder VBA (7)

Frage von nicki01 zum Thema Microsoft Office ...

Microsoft Office
Prüfung von Intervallen und Textausgabe in Excel (2)

Frage von traller zum Thema Microsoft Office ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...

Windows Netzwerk
Windows 10 RDP geht nicht (18)

Frage von Fiasko zum Thema Windows Netzwerk ...