понедельник, 1 июня 2015 г.

Сохранение файла с заданным именем

После обработки данных для некоторых файлов требуется сохранение под определенным именем для того чтобы в последствие провести в исходном файле другую обработку, не выгружая его снова или же просто для последующего упорядочивания таких отчетов. К имени файла можно прибавить текущую дату, время, текстовое содержимое какой либо ячейки и др.
Рассмотрим код:

sub Save_fil
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
 If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
    GlobalScope.BasicLibraries.LoadLibrary("Tools")
  End If
  oDoc = ThisComponent
 sDocURL = oDoc.getURL()
Puti = DirectoryNameoutofPath(sDocURL,"/")
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
args1(0).Value = Puti & "/Проверка операций Внутренние перемещения " & ThisComponent.Sheets (1).getCellByPosition(0, 0).String & " .xls"
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
end sub

Прокомментируем:

Sub Save_filе
' Определяем переменные документа и диспетчера (стандартные функции)
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
' Обязательная проверка нужного нам плагина в библиотеке Tools (стандартно)
 If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then
    GlobalScope.BasicLibraries.LoadLibrary("Tools")
  End If
  oDoc = ThisComponent
 sDocURL = oDoc.getURL()
'Получаем текущую директорию - файл будет сохранен в ту же папку что и исходный
Puti = DirectoryNameoutofPath(sDocURL,"/")
dim args1(2) as new com.sun.star.beans.PropertyValue
args1(0).Name = "URL"
' Определяем полный путь с именем будущего файла. К переменной Puti прибавится текстовое
' имя и в данном случае содержимое ячейки А1 листа 2. Расширение указывать обязательно.
' в данном случае  - стандартно  - xls
args1(0).Value = Puti & "/Проверка операций Внутренние перемещения " & ThisComponent.Sheets (1).getCellByPosition(0, 0).String & " .xls"
' Вызываем сам диспетчер сохранения.
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args1())
end sub

Задача: Сохраните файл Реестр документов по МХ как "Реестр из ТС" + содержимое ячейки А1 первого листа. в данной ячейке заранее пропишите наименование ГМ

Укажем заодно дополнительные функции сохранения:
ThisComponent.store() - просто сохраняет файл с текущим именем (сохраняет изменения)
ThisComponent.Close(True) - закрывает текущий файл (без сохранения!) - очень полезная функция. когда файл не нужен сразу после обработки.

Комментариев нет:

Отправить комментарий