2009-05-12 6 views
0

В OOo CalcOpenOffice.org: макро помощь

Мне нужно скопировать столбец (только значения, не формат) из одного листа на другой (в том же листе) с помощью макроса, назначенного на кнопка.

Я просмотрел немного вокруг, но не нашел ничего значительного :-(

ответ

1

Чтобы ответить на исходный вопрос:

использовать массив данных, который будет существенным быстрее на больших диапазонах ячеек

Source = ThisWeek.getCellRangeByName("H12:H206") 
source_data = Source.getDataArray() 

Target = Steering.getCellRangeByName("M12:AU206").setDataArray(source_data()) 
1

ОК, я мог бы построить ответ и начал обучение OOo Basic, который мне удалось избежать до сих пор ;-)

Я даю его как есть.

Sub UpdateThisWeek 

Dim Doc As Object 
Dim ThisWeek As Object 
Dim Steering As Object 
Dim Source As Object 
Dim Target As Object 
Dim Week as Integer 

Doc = ThisComponent 
ThisWeek = Doc.Sheets.getByName("This week") 
Steering = Doc.Sheets.getByName("Steering") 
Week = Steering.getCellByPosition(6,4).Value 
Source = ThisWeek.getCellRangeByName("H12:H206") 
Target = Steering.getCellRangeByName("M12:AU206").getCellRangeByPosition(Week-19,0,Week-19,194) 

Dim i, s 
For i = 0 To 194 
    s = Source.getCellByPosition(0, i).Value 
    If s > 0 Then 
     Target.getCellByPosition(0, i).Value = s 
    Else 
     Target.getCellByPosition(0, i).String = "" 
    End If 
Next i 

End Sub 
+0

конечно, если кто-то имеет лучшее решение ... ;-) – cadrian