Strona 1 z 1

Format i formuła komórki za pomocą makra

: wt maja 20, 2014 10:22 pm
autor: Emart22
Witam ponownie
Nie mogę nic znaleźć w necie więc zwracam się o pomoc tutaj. Potrzebuje skopiować lub zaszyć w makro format i formułę z komórki, ale bez danych w tej komórce. Znalazłem takie makro, pomijając pętle, której nie potrzebuję

Kod: Zaznacz cały

Sub Kopiowanie2

oSheet1 = ThisComponent.Sheets.getByName("Arkusz1") ' ark.nr1 
oSheet2 = ThisComponent.Sheets.getByName("Arkusz2") ' ark.nr2
oObszarZrodlowy = oSheet2.getCellRangeByName("C1").RangeAddress 
for z=1 to 20 'zmienna pozycji wklejania
WspolzedneWklejenia = oSheet1.getCellByPosition(2,Z).CellAddress
oSheet1.CopyRange(WspolzedneWklejenia,oObszarZrodlowy)
next

End Sub
kopiuje ono także dane a tego chcę uniknąć.
Pozdrawiam
Artur

Re: Format i formuła komórki za pomocą makra

: śr maja 21, 2014 8:59 pm
autor: belstar
Nie przepadam za tym stylem programowania, ale nic lepszego nie znalazłem w swojej kolekcji.

Kod: Zaznacz cały

Sub KopiujWklejSpecjalnie
	Dim oFrame   as object
	Dim dispatcher as object
		'
		oFrame   = ThisComponent.CurrentController.Frame
		dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
		'
	Dim oArgs1(0) as new com.sun.star.beans.PropertyValue
		oArgs1(0).Name = "ToPoint"
		oArgs1(0).Value = "$A$1"'kopiowana
		dispatcher.executeDispatch(oFrame, ".uno:GoToCell", "", 0, oArgs1())
		dispatcher.executeDispatch(oFrame, ".uno:Copy", "", 0, Array())
		'
	Dim oArgs2(0) as new com.sun.star.beans.PropertyValue
		oArgs2(0).Name = "ToPoint"
		oArgs2(0).Value = "$B$1"'tu zostanie wklejone
		dispatcher.executeDispatch(oFrame, ".uno:GoToCell", "", 0, oArgs2())
		'
	Dim oArgs3(5) as new com.sun.star.beans.PropertyValue
		oArgs3(0).Name = "Flags"
		oArgs3(0).Value = "FT" 'flagi, Teraz zostanie wklejony tylko format i formuła 
		oArgs3(1).Name = "FormulaCommand"
		oArgs3(1).Value = 0
		oArgs3(2).Name = "SkipEmptyCells"
		oArgs3(2).Value = false
		oArgs3(3).Name = "Transpose"
		oArgs3(3).Value = false
		oArgs3(4).Name = "AsLink"
		oArgs3(4).Value = false
		oArgs3(5).Name = "MoveMode"
		oArgs3(5).Value = 4
		dispatcher.executeDispatch(oFrame, ".uno:InsertContents", "", 0, oArgs3())
		'
	msgbox "Skopiowane..."
End Sub
'
' [ Wartości flag]
' S    : String ( tekst ) 
' V    : Value ( Wartość )
' D    : Date ( Data )
' F    : Formula (Formuła )
' N    : Note ( Komentarz )
' T    : Format ( formaty )
' Pusty : Object ( Obiekt )
' A    : Wszystko