#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$
Если вы отправляете только один файл и удаляете оба файла, тогда нет необходимости сохранять изменения в другой файл. Вы можете сохранить изменения в том же файле.