Как использовать LotusScript для удаления файла Excel после сохранения изменений в нем?

#excel #com #lotusscript

#excel #com #lotusscript

Вопрос:

В настоящее время я работаю над автоматизацией компиляции документа Excel, который моя компания обычно выполняет вручную. По сути, я делаю следующее, чтобы дать обзор:

Извлечение файла из документа — это встроенный форматированный текстовый элемент ExtractFile() — на локальный диск, редактирование его по мере необходимости, использование SaveAs для сохранения обновленного в том же каталоге. Отправка файла с помощью MIME. Все это работает нормально — и в этом заключается моя проблема:

У меня осталось два файла, находящихся в указанном каталоге. Последнее, что мне нужно, чтобы агент сделал, это удалил эти файлы. Первоначально я попробовал Kill команду, за которой следует указанный каталог. Это привело к ошибке объекта OLE Automation; из-за этого я пошел и искал новые способы попытаться удалить файл, чтобы посмотреть, выдаст ли он мне ошибку. Итак, я попытался выполнить следующее:

 Call createObject("scripting.filesystemobject").deletefile(filePath, True)
 

Это также дало мне ту же ошибку. Я также попробовал несколько других действий. Например:

  • Вызов xlApp.Quit() метода для обоих файлов Excel, не повезло.
  • Вызов ReleaseComObject()
  • Sleep(3) Добавляю, чтобы посмотреть, поможет ли мне это — нашел это на других форумах

Если у вас есть какие-либо идеи, чтобы попытаться заставить это работать без ошибок, это было бы невероятно полезно.

Ответ №1:

Вместо использования Workbook.SaveAs метода используйте Workbook.Close метод для сохранения изменений. После вызова этого метода файл закрывается, и его можно легко удалить. Чтобы удалить файл, используйте стандартную Kill инструкцию LotusScript.
Вот пример:

 'Get the document here

Set rtItem = doc.GetFirstItem(excelFileItem$)
Set obj = rtItem.EmbeddedObjects(0)

tempDir$ = Environ("Temp") amp; ""

'These file names is just for example. Use your owns.
fileName$ = tempDir$ amp; obj.Source
saveAsFileName$ = tempDir$ amp; "New " amp; obj.Source

Call obj.ExtractFile(fileName$)

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(FileName$)

'Update excel here.

xlBook.Close True, saveAsFileName$, False'Save the file where you need to.
xlApp.Quit

'Send mail here.

Kill fileName$
Kill saveAsFileName$
 

Если вы отправляете только один файл и удаляете оба файла, тогда нет необходимости сохранять изменения в другой файл. Вы можете сохранить изменения в том же файле.