Ich versuche, eine Möglichkeit zum Öffnen von Excel mit Outlook VBA zu finden, aber nur, wenn es nicht bereits geöffnet ist. Ich habe im Internet Code gefunden, der Excel öffnet, Änderungen vornimmt und dann schließt, aber es verhält sich nicht gut, wenn die Excel-Arbeitsmappe bereits geöffnet ist (die Änderungen werden zwar übernommen, aber die Excel-Arbeitsmappe wird nicht mehr geschlossen). und es hinterlässt es einfach mit einem grauen Inneren, manchmal zeigt es sich auch nicht mehr im Explorer und ich muss es vom Aufgabenmanager schließen. Ich würde es auch sehr schätzen, wenn jemand erklären könnte, was der meiste Code tut.So öffnen Sie Excel, wenn nicht bereits geöffnet
Public xlApp As Object
Public xlWB As Object
Public xlSheet As Object
Sub ExportToExcel()
Dim enviro As String
Dim strPath As String
'Get Excel set up
enviro = CStr(Environ("USERPROFILE"))
'the path of the workbook
strPath = enviro & "\Documents\test2.xlsx"
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err <> 0 Then
Application.StatusBar = "Please wait while Excel source is opened ... "
Set xlApp = CreateObject("Excel.Application")
bXStarted = True
End If
On Error GoTo 0
'Open the workbook to input the data
Set xlWB = xlApp.Workbooks.Open(strPath)
Set xlSheet = xlWB.Sheets("Sheet1")
' Process the message record
On Error Resume Next
xlWB.Close 1
If bXStarted Then
xlApp.Quit
End If
End Sub
Ich weiß, was die xlWb
und xlSheet
Objekte tun, und wie sind sie erklärt, und ich verstehe auch, was die environ
Funktion und strPath
Zeichenfolge zu tun, aber ich weiß nicht, warum wir undestand die bXStarted
boolean benötigen, was Set xlApp = GetObject
tut, warum die Application.StatusBar
Nachricht nicht angezeigt wird, der Unterschied zwischen GetObject
und CreateObject
und warum so viele Fehlertests benötigt werden. Vielen Dank im Voraus.
Die Sache ist, das Skript speichert Änderungen. Wie auch immer, schlägst du vor, ich schreibe eine 'xlWB.Save 1' vor die' xlWB.Close 1'? – NAlexP
nehmen Sie den on-Fehler heraus und sehen Sie, was der Fehler zuerst ist. –
Die Idee aus dem Code sieht so aus, als ob sie nicht dazu gedacht ist, eine Arbeitsmappe zu schließen, die bereits geöffnet ist. Wenn Sie möchten, dass die Arbeitsmappe geschlossen wird, entfernen Sie die XStarted-Prüfung vor dem Schließen. –