Ich habe ein VBS-Skript, das ein VBA-Makro in Excel ausführt. Das Makro funktioniert, wenn ich es manuell in der Excel-Datei ausführe, aber wenn es vom VBS aufgerufen wird, löscht es die vorhandenen Daten nicht, bevor die Abfragen ausgeführt werden.So löschen Sie Excel-Zellen beim Ausführen eines Makros aus VBs Skript
Hier mein VBS-Skript mit Excel zu tun:
Dim xlApp, xlBook
Set xlApp = CreateObject("Excel.Application")
xlApp.DisplayAlerts = False
Set xlBook = xlApp.Workbooks.Open("Y:\Public\Eoin\Complaints Report\Complaints Report.xlsm", False)
msgbox("3")
xlApp.Run "Complaints_Report.Complaints_Report()"
WScript.Sleep 100000
xlbook.Save
xlBook.Close False
set xlBook = Nothing
xlApp.Quit
Set xlApp = Nothing
Hier mein Excel VBA-Makro in einem Modul gespeichert ist:
Sub Complaints_Report()
Sheets("Complaints Report").Activate
'Clear out old detail
Range("A2:Z10000").Clear
'Declare variables'
Set objMyConn = New ADODB.Connection
Set objMyRecordset = New ADODB.Recordset
Dim strSQL As String
'Open Connection'
objMyConn.ConnectionString = "Driver={Microsoft ODBC for Oracle}; " & _
"CONNECTSTRING=(DESCRIPTION=" & _
"(ADDRESS=(PROTOCOL=***)" & _
"(HOST=*****)(PORT=****))" & _
"(CONNECT_DATA=(SERVICE_NAME =*****))); uid=******; pwd=*****;"
objMyConn.Open
'Set and Excecute SQL Command'
strSQL = "Select distinct * From Temp_Final_Complaints_Report"
'Open Recordset'
Set objMyRecordset.ActiveConnection = objMyConn
objMyRecordset.Open strSQL
'Copy Data to Excel'
Sheets("Complaints Report").Range("A2").CopyFromRecordset (objMyRecordset)
End Sub
Das Makro gibt die Ergebnisse zurück, aber löscht nicht aus alles in das Blatt vorher.
Das geht immer noch nicht. Derzeit habe ich in meiner Excel-Datei Daten in Zeilen 2:13 und ich habe einige Dummy-Daten in Zellen in A21 und A33 eingegeben, um sicherzustellen, dass das Makro jedes Mal fängt, wenn eine leere Zeile vorhanden ist. Momentan führt das Makro die SQL-Abfragen aus und gibt sie aus, während die Dummy-Daten erhalten bleiben. –
Sogar auskommentieren alles bar Sheets ("Beschwerden Bericht") Aktivieren 'löschen alte Detail Sheets ("Beschwerden Bericht". Bereich ("A2: Z10000"). Klare tut nichts –
Nur ein anderes Problem beim Versuch zu erkennen Imitieren Sie Ihr Setup: Die Klammern im VBScript sollten weggelassen werden. Siehe meine aktualisierte Antwort. – trincot