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, 4509 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!!!

MFG

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 ..
Ähnliche Inhalte
Microsoft Office
Excel 2007 jedes Fenster in extra Instanz (7)

Frage von xbast1x zum Thema Microsoft Office ...

Datenbanken
gelöst SQL-Server: Wann Instanzen nutzen? (11)

Frage von User1000 zum Thema Datenbanken ...

Datenbanken
MySQL - Mehrere Instanzen

Frage von ForgottenRealm zum Thema Datenbanken ...

Neue Wissensbeiträge
Windows Update

Microsoft Update KB4034664 verursacht Probleme mit Multimonitor-Systemen

Tipp von beidermachtvongreyscull zum Thema Windows Update ...

Viren und Trojaner

CNC-Fräsen von MECANUMERIC werden (ggf.) mit Viren, Trojanern, Würmern ausgeliefert

(4)

Erfahrungsbericht von anteNope zum Thema Viren und Trojaner ...

Windows 10

Windows 10: Erste Anmeldung Animation deaktivieren

(3)

Anleitung von alemanne21 zum Thema Windows 10 ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Linksys wrt1200ac v2 mit dd-wrt: keine vlan-einstellungen im GUI (15)

Frage von Pixi123 zum Thema Router & Routing ...

E-Business
Wo tragt ihr eure privaten Termine ein? (13)

Frage von honeybee zum Thema E-Business ...

Batch & Shell
Batch zum suchen und verschieben von Verknüpfungen (12)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Windows Server
Terminalserver starten willkürlich neu (12)

Frage von thaefliger zum Thema Windows Server ...