Kombination BeforeClose mit Serverskript
13.12.2017 10:04:31
Roitzsch
ich habe mir von unserer IT einen Serverdienst (Skript) einrichten lassen, der nachts eine Exceldatei öffnet und schließt. In der Datei ist ein Makro enthalten, welches über BeforeClose ausgeführt wird und zusammen mit dem Serverskript automatisch startet.
Das Makro liest die Datei aus und erstellt mir Textdateien, welche ich täglich benötige (deshalb das Serverdskript). Ich würde gerne mit eurer Hilfe zwei Dinge versuchen zu klären:
1. Aktuelles Problem mit dem Makro/Serverdienst:
Workbook.Save wird nicht ausgeführt, wenn das Makro durch den Serverdienst ausgeführt wird. Wenn ich das Makro manuell starte oder die Datei selbst öffne und schließe funktioniert es.
2. Könnt ihr mir sagen, was allgemein zu Fehlern bei der Kombination Excelmakro und Serverskript führen kann? Zum Beispiel hängt sich das Skript immer auf, wenn ein Blatt- oder Arbeitsmappenschutz auf der Datei liegt. Gibt es generelle Dinge die ich beachten muss, wenn ich ein Makro über ein Serverskript ausführen lassen möchte?
Hier mal der Code
Private Sub WriteUpload()
Dim mrow As Long
Dim arr As Excel.Range
Dim file As Variant
Dim makeFile As String
Dim name As String
Dim wrString As String
Dim trz As String
ActiveWorkbook.Save
trz = ";"
'aktuelle Freigabe
makeFile = "\\Verzeichnis\123.csv"
Set file = CreateObject("Scripting.FileSystemObject").CreateTextFile(makeFile, True, False)
wrString = "Version" & trz & "BAF" & trz & "" & trz & "Vorplan" file.WriteLine wrString
wrString = "Periode" & trz & "1" & trz & "bis" & trz & "12"
file.WriteLine wrString
wrString = "Geschäftsjahr" & trz & Range("A2") & trz & "" & trz & ""
file.WriteLine wrString
wrString = "PSP Element" & trz & "Kostenart" & trz & "Planwerte" & trz & "VS"
file.WriteLine wrString
wrString = ""
With ActiveSheet
Set arr = .Range(.[A1], .UsedRange.Cells(.UsedRange.Cells.Count))
For mrow = 2 To arr.Rows.Count
wrString = ""
wrString = arr.Cells(mrow, 5).Value & trz & arr.Cells(mrow, 4).Value &
trz & Round(arr.Cells(mrow, 20).Value, 2) & trz & "2"
file.WriteLine wrString
Next
End With
file.Close
'Prognose
makeFile = "\\Verzeichnis\123.csv"
Set file = CreateObject("Scripting.FileSystemObject").CreateTextFile(makeFile, True, False)
wrString = "Version" & trz & "VPT" & trz & "" & trz & "Vorplan" file.WriteLine wrString
wrString = "Periode" & trz & "1" & trz & "bis" & trz & "12"
file.WriteLine wrString
wrString = "Geschäftsjahr" & trz & Range("A2") & trz & "" & trz & ""
file.WriteLine wrString
wrString = "PSP Element" & trz & "Kostenart" & trz & "Planwerte" & trz & "VS"
file.WriteLine wrString
wrString = ""
With ActiveSheet
Set arr = .Range(.[A1], .UsedRange.Cells(.UsedRange.Cells.Count))
For mrow = 2 To arr.Rows.Count
wrString = ""
wrString = arr.Cells(mrow, 5).Value & trz & arr.Cells(mrow, 4).Value &
trz & Round(arr.Cells(mrow, 21).Value, 2) & trz & "2"
file.WriteLine wrString
Next
End With
file.Close
End Sub
Sub Workbook_BeforeClose(Cancel As Boolean)
WriteUpload
End Sub
Ich hoffe ihr könnt mir helfen, auch wenn das Thema nicht ausschließlich Excel betrifft. Vielen Dank schon mal vorab!BG Dennis