Добрый день!
Нужна помощь в написании макроса. Есть некая программа результатом которой, создается отчет на листе Calc. Так как таблица на листе размещена в "рандомном" месте, нужно выполнить поиск, найти заглавие таблицы (например "Отчет", находится допустим в ячейке C4), затем скопировать саму таблицу (диапазон А4:F14) и вставить в нужное место, н-р в начало листа (ячейка A1).
PS: При печати, расположение таблицы на двух листах.
Заранее благодарю! ;)
Цитата: dimmon777 от 12 ноября 2015, 18:26Есть некая программа результатом которой, создается отчет на листе Calc. Так как таблица на листе размещена в "рандомном" месте, нужно выполнить поиск, найти заглавие таблицы (например "Отчет", находится допустим в ячейке C4), затем скопировать саму таблицу (диапазон А4:F14) и вставить в нужное место, н-р в начало листа (ячейка A1).
PS: При печати, расположение таблицы на двух листах.
С такой постановкой задачи нужно подождать пару десятилетий, пока компьютеры не научатся угадывать мысли...
Если некая программа размещает данные в виде таблицы на чистом листе, то вокруг такой таблицы должны быть пустые строки и/или столбцы. Если их убрать, то таблица станет в угол A1.
Или есть какие то сложности?
Цитата: rami от 12 ноября 2015, 19:00rami
:) Не все так просто... Я описание ОЧЕНЬ упростил. Конечно же на листе имеется несколько данных и простым перемещением таблицы здесь не обойтись.
1- Нужно найти текст
Sub SearchSheet
Dim oSheet
Dim oReplace
oSheet = ThisComponent.Sheets(0)
oReplace = oSheet.createReplaceDescriptor()
oReplace.setSearchString("Отчет")
...
Выполнено
2 От ячейки содержащей значение "Отчет" выделяем 10 строк вниз ... ??? ??? ???
Цитата: dimmon777 от 12 ноября 2015, 19:10:) Не все так просто...
... ??? ??? ???
А когда продолжение?
Наконец-то добил, получилось примерно следующее, для меня в самый раз: :beer:
Sub SearchSheet
Dim oSheet
Dim oCell
oSheet = ThisComponent.Sheets(0)
FandR = oSheet.createSearchDescriptor
FandR.setSearchString("Отчет: ")
oCell = oSheet.findFirst(FandR)
i=oCell.CellAddress.Row
FandR.setSearchString("Итоги")
oCell = oSheet.findFirst(FandR)
i2=oCell.CellAddress.Row
'i1=oCell.CellAddress.Column
source = oSheet.getCellRangeByPosition(0, i, 37,120).getRangeAddress()
destination = oSheet.getCellByPosition(0,i2+6).getCellAddress()
oSheet.moveRange( destination , source )
s = ThisComponent.CurrentController.getActiveSheet().PageStyle
oStyle = ThisComponent.StyleFamilies.getByName("PageStyles").getByName(s)
oStyle.ScaleToPages = 2 'кОЛ-ВО ЛИСТОВ
End Sub