Копировать диапазон ячеек из листа в другую книгу

Автор dimmon777, 27 октября 2015, 22:33

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

dimmon777

Пожалуйста помогите! Нужен макрос копирования нужного диапазона из рабочего листа в книгу находящуюся по пути С/:... Далее если книга не существует, то нужно создать, открыть и вставить в первую свободную строку копируемый диапазон листа, затем сохранить и  закрыть

JohnSUN

И чего на полуслове прервался? Начал ведь "если книга не существует, то..." А где "иначе ..."?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

dimmon777

#2
Цитата: JohnSUN от 27 октября 2015, 22:53
И чего на полуслове прервался? Начал ведь "если книга не существует, то..." А где "иначе ..."?
... открыть найти первую чистую строку ставить диапазон и соответственно закрыть...

В принципе уже код написал на основе ранее предложенных на сайте:


Код:

sub Reest
Dim oCell
Dim Sheet
Dim oDoc

Sheet1=ThisComponent.Sheets.getByName("Лист2")

OpenAndClose

Sheet2=ThisComponent.Sheets.getByName("Лист1")
Cursor=Sheet2.createCursor()
Cursor.gotoEndOfUsedArea(false)
y=Cursor.RangeAddress.EndRow
oAllData=Sheet1.getCellRangeByName("A1:e1").DataArray
i=UBound(oAllData(0))
Sheet2.insertCells(Sheet2.getCellRangeByPosition(0,y+1,i,y+1).getRangeAddress(),com.sun.star.sheet.CellInsertMode.DOWN)

Sheet2.getCellRangeByPosition(0,y+1,i,y+1).DataArray=oAllData


Sheet2.IsTextWrapped = True
ThisComponent.store()
ThisComponent.close(true)
End Sub


Sub OpenAndClose
Dim oDoc as Object
 Dim oFile as String
 Dim oUrl as String
 Dim oUrlTemp as String
 oFile = "C:\one.odt" 'The file you want to open
 oUrl = convertToUrl (oFile)
 oDoc = openSpreadSheet(oFile)
 oDoc.storeAsUrl(oUrl, Array())

 End Sub



Function openSpreadSheet (iFile as String) as Object
 Dim oUrl as String
 If fileExists (iFile) Then
   oUrl = convertToUrl (iFile)
 Else
   oUrl = "private:factory/scalc"
 End If
 openSpreadSheet = StarDesktop.loadComponentFromURL (oUrl, "_blank", 0, Array() )
End Function



НО, встает следующий вопрос, может макрос кто то сможет более оптимизировать?