2010-12-08 3 views
0

Immer wenn ich diesen Code verwenden,ASP Excel.Application objExcel.Range ("range") Einfrieren

Set oExcel = CreateObject("Excel.Application") 
Set oWorkbook = oExcel.Workbooks.Open(sPathToTemplate) 

oExcel.Range("shipping_name").Value = strShippingName 

oWorkbook.Close() 
Set oWorkbook = Nothing 
Set oExcel = Nothing 

Der Excel-Prozess auf dem Server ist das Einfrieren, und die Zellen werden nie verändert. Oder zumindest scheint es so zu sein.

Die Arbeitsmappe öffnet sich einwandfrei, und wenn ich nicht versuche, Zelleninhalte zu ändern, wird der Code ohne Fehler abgeschlossen. Aber wenn ich die Änderung wieder hinzufüge und die Seite aktualisiere, wird der EXCEL.exe-Prozess im Task-Manager angezeigt und das Skript reagiert nicht mehr. Ich muss den Prozess manuell beenden, damit es ausläuft.

Alles was ich tun kann, damit der Code funktioniert?

+0

Gleiche geschieht anrufen, wenn ich oExcel.Range verwenden („shipping_name“) – Dexter

+0

Ich bin überrascht, dass Sie nicht bekommen, ein Parse-Fehler wegen der Klammern in Ihrer Subroutine Aufruf 'oWorkbook.Close()' –

+0

Ich denke, oWorkbook.Close() gibt True oder etwas zurück, so dass möglicherweise warum. Ich weiß, dass oExcel.Open (file) die Arbeitsmappe zurückgibt, also frage ich mich, was .Close() zurückgibt. Was auch immer, ist die Klammerfunktion nicht nur ein Problem zwischen Funktionen und Unterroutinen und nicht Methoden? – Dexter

Antwort

1

Dies liegt möglicherweise daran, dass Sie die Arbeitsmappe nicht speichern. Auf einem Desktop würde dies dazu führen, dass Excel ein "Möchten Sie die Änderungen speichern?" Dialog.

Versuchen Zugabe

oWorkbook.saved = true 

bevor Sie die Arbeitsmappe schließen. Dadurch wird Excel nicht darauf hingewiesen, ob sich die Arbeitsmappe geändert hat (das Dokument wird jedoch nicht gespeichert). Wenn Ihre Asp funktioniert, ist es das Speichern-Dialogfeld, das das Problem verursacht. Um tatsächlich die Änderungen zu speichern, müssen Sie eine der

oWorkbook.Save 
oWorkbook.SaveAs 

Methoden

+0

Mein Problem ist, dass ich geplant habe, diese Arbeitsmappe als Vorlage zu verwenden und sie als eine andere Datei zu speichern, aber ich bin nicht zu diesem Teil gekommen. Könnte ich ein SaveAs mit demselben Ergebnis machen? – Dexter

+0

Vergesst nicht, sieht so aus, als ob es funktioniert hat. Vielen Dank! – Dexter

+0

Ich sollte so denken, solange Ihre ASP Schreibzugriff auf Ihren Webserver hat sollte es funktionieren –