Выгрузка в PDF

Автор Sliv0210, 23 ноября 2020, 12:15

0 Пользователи и 1 гость просматривают эту тему.

Sliv0210

Добрый день, товарищи-эксперты!
Имеется документ, который выгружается в PDF.
В этом документе есть листы, свойство Visible которых выставлено в False.
Тем не менее эти листы тоже выгружаются.
Подскажите пжлста как сделать так, чтобы выгружалось, только то, что видно
Текст кода прилагаю.

   Dim document As Object
   Dim dispatcher As Object
   
   document = ThisComponent.CurrentController.Frame
   dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")

   fileSaveName = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
   path = Replace(ActiveWorkbook.Path, getPathSeparator(), "/") 

   Dim args1(2) as new com.sun.star.beans.PropertyValue
   args1(0).Name = "URL"
   args1(0).Value = "file:///" & path & "/" &  fileSaveName & ".pdf"  '
   args1(1).Name = "FilterName"
   args1(1).Value = "calc_pdf_Export"
   

   dispatcher.executeDispatch(document, ".uno:ExportDirectToPDF", "", 0, args1())

bigor

Добрый день.
Цитата: Sliv0210 от 23 ноября 2020, 12:15этом документе есть листы, свойство Visible которых выставлено в False
Это как? В меню листа выбрана команда "Скрыть"? Такие листы Ваш макрос у меня в pdf не выводит.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Sliv0210

Цитата: Bigor от 23 ноября 2020, 13:36
Добрый день.
Цитата: Sliv0210 от 23 ноября 2020, 12:15этом документе есть листы, свойство Visible которых выставлено в False
Это как? В меню листа выбрана команда "Скрыть"? Такие листы Ваш макрос у меня в pdf не выводит.


В тексте макроса выше стоят несколько команд, типа:
Лист2.Visible = False

sokol92

#3
Добрый день!
Не следует в макросе для LO Basic использовать объекты из объектной модели Excel.
Следующий макрос выводит в файл pdf все листы документа, кроме второго. Файл pdf формируется в том же каталоге и с тем же именем, что и исходный документ Calc.

Sub TestPdf
  Dim oDoc As Object
  Dim dispatcher As Object
  Dim fileSaveName As String, i As Long
 
  oDoc=ThisComponent
  dispatcher = CreateUnoService("com.sun.star.frame.DispatchHelper")
  fileSaveName=oDoc.Url
 
  If fileSaveName="" Then
    MsgBox "Документ еще не сохранялся"
    Exit Sub
  End If 
 
  ' убираем расширение
  i=Len(fileSaveName)
  Do While i>1
    If Mid(fileSaveName,i,1)="." Then
      fileSaveName=mid(fileSaveName, 1, i-1)
      Exit Do
    Else   
      i=i-1
    End If 
  Loop
 
  Dim args1(1) as new com.sun.star.beans.PropertyValue
  args1(0).Name = "URL"
  args1(0).Value = fileSaveName & ".pdf"  '
  args1(1).Name = "FilterName"
  args1(1).Value = "calc_pdf_Export"
 
  With oDoc
    ' перед выводом скрываем 2-й лист, после вывода открываем 
    .sheets(1).IsVisible=False
    dispatcher.executeDispatch(.CurrentController.Frame, ".uno:ExportDirectToPDF", "", 0, args1())
    .sheets(1).IsVisible=True
  End With 
End Sub
Владимир.

Sliv0210

Добрый день...
Не работает, к сожалению...
Все равно выводятся листы, у которых свойство .IsVisible = False  ??? :roll:

bigor

Неправда Ваша. Протестил на Версия: 6.4.6.2 (x86) все работает. Лист2 не выводится. Приложите свой файл, или сделайте тестовый с воспроизводимой ошибкой.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

Sliv0210

может это из-за того, что у меня сильно свежая версия стоит?
???
Version: 7.0.3.1 (x64)
Build ID: d7547858d014d4cf69878db179d326fc3483e082
CPU threads: 2; OS: Windows 10.0 Build 17763; UI render: Skia/Raster; VCL: win
Locale: ru-RU (ru_RU); ИП: ru-RU
Calc: threaded

bigor

Что бы не гадать
ЦитироватьПриложите свой файл, или сделайте тестовый с воспроизводимой ошибкой.
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

sokol92

Цитата: Sliv0210 от 25 ноября 2020, 11:30может это из-за того, что у меня сильно свежая версия стоит?
Я на этой версии и проверял. Ответьте, пожалуйста, на сообщения #5 и #7, и мы найдем истину.
Владимир.