Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

27 Сентябрь 2021, 09:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Вы можете задать вопрос по LibreOffice или Apache OpenOffice без регистрации, используя форму
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: « 1 2   Вниз
  Печать  
Автор Тема: Как получить имя поименованной ячейки?  (Прочитано 1676 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Kadet
Форумчанин
***
Offline Offline

Сообщений: 635


« Ответ #58566: 30 Май 2021, 22:30 »

Добрый день, коллеги!
Нужна ещё помощь.
Пытаюсь скопировать документ CALC в другой документ CALC со специальным форматированием. Первый лист документа должен быть ориентирован книжно, а все прочие альбомно. Потом это документ будет сохраняться в PDF для удобства формирования ком.предложения.

Однако, никак не получается установить разные стили страниц для разных листов CALC. Что делаю не так? Где ошибка.

Код макроса-экспортёра из CALC в CALC
Код:
Sub ANExport(oEvent)
Dim oDoc As Object, vComp As Object, oSheet As Object, oSheet1 As Object, oRange, oRange1, oRow%, oCell, sURL$, oData, StyleName
Dim i%, j%, k%, n%, index%, Xmax, Ymax, sName$, oStartColumn, oStartRow, oEndColumn, oEndRow, oRw%, bFooterIs as Boolean
Dim oPaperOrien, document, oActiveSheet, MaxPages, oPageStyles, oStyle, oLeftText, oCenterText, oRightText, oGraph, oDrawPage
Dim aSize As new com.sun.star.awt.Size
Dim oOpt(1) as new com.sun.star.beans.PropertyValue
Dim CellAddress As New com.sun.star.table.CellRangeAddress
Dim oRanges(0) As New com.sun.star.table.CellRangeAddress
'ON LOCAL ERROR GOTO ErroANExport:

oDoc = ThisComponent

sURL = "private:factory/scalc"
vComp = StarDesktop.LoadComponentFromUrl(sURL, "_blank", 0, Array())
document = vComp.CurrentController.Frame
document.Controller.ShowGrid = false 'Убрать разметку ячеек
' document.Controller.HasColumnRowHeaders = false 'Убрать названия сток и стоблцов

oSheet = oDoc.CurrentController.getActiveSheet
index = oSheet.RangeAddress.Sheet
n = oDoc.Sheets.Count-2
For k=0 To n
oSheet = oDoc.Sheets(k)
sName = oSheet.Name
If k=0 Then
oSheet1 = vComp.Sheets(k)
oSheet1.Name = sName
Else
vComp.Sheets.insertNewByName(sName, k)
End If

oSheet1 = vComp.Sheets(k)
oRange = oSheet.getCellByPosition(0,0)
oDoc.CurrentController.select(oRange)

Xmax = oDoc.CurrentController.VisibleArea.Width
Ymax = oDoc.CurrentController.VisibleArea.Height
If k=0 Then
oPaperOrien = 0
oStartColumn = 0
oStartRow = 0
oEndColumn = 5
oEndRow = 500
bFooterIs = False
MaxPages = 2
StyleName = "Report"
Else
oPaperOrien = 1
oStartColumn = 0
oStartRow = 0
oEndColumn = Xmax/oSheet.Columns(1000).Width
oEndRow = Ymax/oSheet.Rows(1000).Height
bFooterIs = True
MaxPages = 1
StyleName = "Default"
End If

oRange = oSheet.getCellRangeByPosition(oStartColumn,oStartRow,oEndColumn,oEndRow)
oData = oRange.DataArray
oRange = oSheet.getCellRangeByPosition(0,0,oEndColumn,oEndRow)
oDoc.CurrentController.select(oRange)
oData = oDoc.CurrentController.getTransferable()

oRange1 = oSheet1.getCellRangeByName("A1")
vComp.CurrentController.select(oRange1)
vComp.CurrentController.insertTransferable(oData)

oActiveSheet = vComp.CurrentController.getActiveSheet()
oStyle = vComp.StyleFamilies.getByName("PageStyles").getByName(StyleName)
oStyle.CenterHorizontally = True
oStyle.HeaderIsOn = True
oStyle.FooterIsOn = false
oStyle.TopMargin = 750
oStyle.LeftMargin = 500
oStyle.RightMargin = 500
oStyle.BottomMargin = 750
oStyle.ScaleToPagesX = 1
oStyle.ScaleToPagesY = MaxPages
SetHeaderTextInSpreadSheet(vComp, oSheet1, oLeftText, oCenterText, oRightText)

oOpt(1).Name = "PaperOrientation"
oOpt(1).Value = oPaperOrien
vComp.Printer = oOpt()

oRanges(0).Sheet = k
oRanges(0).StartColumn = 0 : oRanges(0).StartRow = 0
oRanges(0).EndColumn = oEndColumn : oRanges(0).EndRow = oEndRow
vComp.CurrentController.getActiveSheet().setPrintAreas(oRanges)

oActiveSheet.Rows(oStartRow).IsStartOfNewPage = True
Next
'***********************************************************************
ErroANExport:
' ON LOCAL ERROR GOTO 0
End Sub

P.S./// Возможно в оторванности от основной базы макрос не будет работать. Не проверял.

* ExpDoc.ods (78.64 Кб - загружено 2 раз.)
Записан
Страниц: « 1 2   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!