表の体裁(一行目を変更)

AからFの表、一行目高さを変更。色をつけて、
フォントの色も変える(^^)

Dim Sheet As Object
Dim oRange as Object

Sheet = ThisComponent.currentcontroller.Activesheet
'範囲設定
oRange = Sheet.getCellRangeByName("A1:F1")
' 範囲の背景色を指定
oRange.CellBackColor=RGB(255, 0, 0 ) ' 青
' 範囲のフォント色を指定
oRange.CharColor=RGB(255,255,255) '白
'行高さを設定
Sheet.Rows(0).Height=2000 
スポンサーサイト



テーマ : Libreoffice
ジャンル : コンピュータ

行・列の削除

Dim Sheet As Object

Sheet = ThisComponent.currentcontroller.Activesheet


'開始位置,処理する数
Sheet.rows.removeByIndex(0, 3)
'0から3行削除


Sheet.Columns.removeByIndex(0, 2)
'A列~B列削除(2列削除)

テーマ : Libreoffice
ジャンル : コンピュータ

行・列の挿入

行の挿入・列の挿入

Dim Sheet As Object
Sheet = ThisComponent.currentcontroller.Activesheet


Sheet.rows.insertByIndex(0, 5)
'1行目から5行挿入

Sheet.Columns.insertByIndex(2, 1)
'C列挿入

テーマ : Libreoffice
ジャンル : コンピュータ

データの抽出その3

抽出を解除するのもマクロで行う

Dim oSheet As Object
Dim oRange As Object
Dim oCritRange As Object
Dim oFilterDesc As Object

oSheet = ThisComponent.currentcontroller.Activesheet
oRange = oSheet.getCellRangeByName("a5:v30")

oCritRange = oSheet.getCellRangeByName("a1:v2")


rem ここから解除のコード

oFilterDesc = oRange.createFilterDescriptor(True)
oRange.filter(oFilterDesc)
end sub

で解除しました(^^)

テーマ : Libreoffice
ジャンル : コンピュータ

データ抽出その2


Dim oSheet As Object
Dim oRange As Object
Dim oCritRange As Object
Dim oFilterDesc As Object

oSheet = ThisComponent.currentcontroller.Activesheet
oRange = oSheet.getCellRangeByName("a5:g30")
rem ↑データの範囲
oCritRange = oSheet.getCellRangeByName("a1:g2")
rem ↑抽出条件の範囲
oFilterDesc = oCritRange.createFilterDescriptorByObject(oRange)
If Not IsNull(oFilterDesc) Then
oRange.filter(oFilterDesc)
End If

で抽出OK。

データ抽出その1

Calcで作ったデータを抽出してみる。

家計簿

↑のようなデータを6行目からA列からG列まで用意し、
2行目に抽出条件を入力し、マクロを動かす。

抽出

のように、2行目に抽出条件を入力。この場合 食費と太陽㈱ で絞り込む。
太陽㈱の食費が抽出される、という形をめざす。

テーマ : Libreoffice
ジャンル : コンピュータ

文字の置き換え

指定したシートの文字の置き換え。
この場合1枚目から2枚目のシートの中でsheを探してheに置き換える。

Dim Sheet As Object
Dim ReplaceDescriptor As Object
Dim I As Integer


Sheet = ThisComponent.Sheets.getByIndex(0)


ReplaceDescriptor = Sheet.createReplaceDescriptor()
ReplaceDescriptor.SearchString = "she"
ReplaceDescriptor.ReplaceString = "he"
'sheをheに置き換える
For I = 0 to 1
'1枚目のシートから2枚目のシートについて
Sheet = ThisComponent.Sheets.getByIndex(I)

Sheet.ReplaceAll(ReplaceDescriptor)
Next I

テーマ : Libreoffice
ジャンル : コンピュータ

セルの移動

'B2:C3 のセル範囲を、A6 の位置へ移動します。

Dim Sheet As Object
Dim CellRangeAddress As New com.sun.star.table.CellRangeAddress
Dim CellAddress As New com.sun.star.table.CellAddress


Sheet = ThisComponent.Sheets.getByIndex(0)


'移動元の指定
CellRangeAddress.Sheet = 0
CellRangeAddress.StartColumn = 1
CellRangeAddress.StartRow = 1
CellRangeAddress.EndColumn = 2
CellRangeAddress.EndRow = 2

'移動先の指定
CellAddress.Sheet = 0
CellAddress.Column = 0
CellAddress.Row = 5



Sheet.moveRange(CellAddress, CellRangeAddress)

テーマ : Libreoffice
ジャンル : コンピュータ

指定列の最終行を取得

指定列の最終行を取得する。

Sub LastlAddress


Dim oDoc as Object
Dim oSheet as Object
Dim oCursor as Object
Dim oCntrl as Object
Dim oFrame as Object
Dim oDispatcher as Object
Dim oEndRow as Long


Dim oProp(1) as new com.sun.star.beans.PropertyValue

oDoc = ThisComponent
oSheet = oDoc.getSheets().getByIndex(0)
'シート指定。アクティブなブックの一番左


oCursor = oSheet.createCursor()
oShtEndRow = oCursor.getRangeAddress().EndRow

oCntrl = oDoc.getCurrentController()
oFrame = oCntrl.Frame

oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
oProp(0).Name = "ToPoint"
oProp(0).Value = "$A$" & oShtEndRow
'列指定.この場合A列

oProp(1).Name = "Sel"
oProp(1).Value = false
oDispatcher.executeDispatch( oFrame, ".uno:GoToCell", "", 0, oProp()) '
oProp(0).Name = "By"
oProp(0).Value = 1
oProp(1).Name = "Sel"
oProp(1).Value = false
oDispatcher.executeDispatch(oFrame, ".uno:GoUpToStartOfData", "", 0, oProp())
oEndRow = oCntrl.getSelection().getRangeAddress().EndRow+1
msgbox oEndRow
'指定列の最終行表示
end sub

難しすぎてくじけそう><

テーマ : Libreoffice
ジャンル : コンピュータ

clearContents

clearContents
クリアしたいときのオプションが数値として列挙されている

値 フラグ    説明
1 VALUE    日付や時刻として書式設定されていない数値
2 DATETIME  日付や時刻として書式設定されている数値
4 STRING   文字列
8 ANNOTATION セルに付けられたコメント
16 FORMULA  計算式
32 HARDATTR  セルに直接指定された書式
64 STYLES   間接的に指定された書式
128 OBJECT  セルに配置された描画オブジェクト
256 EDITATTRセル内の一部のテキストに対してのみ指定された書式
openoffice解説

で、この数値を示すことで、クリアにしたいオプションを選べるそうである。

Dim oSheet As Object
Dim oRange As Object

oSheet = ThisComponent.Sheets.getByIndex(0)
oRange = oSheet.getCellrangebyname("a1:a10")
oRange.clearContents(36)

とした場合
4 STRING   文字列と
32 HARDATTR  セルに直接指定された書式
の和36により、文字列と書式のみが消えるらしい。

テーマ : Libreoffice
ジャンル : コンピュータ

シートの挿入

新しいシートを一番左に作る。名前はNew

Dim oSheeet as object
Dim oSheets
oSheets = ThisComponent.Sheets

Rem Add new sheet before sheet "SomeOtherSheet"
oSheets.InsertNewByName( "New", 0)


新しいシートを一番後ろに作る。名前はnew

Sub newsheet
Dim oSheeet as object
Dim oSheets
oSheets = ThisComponent.Sheets

oSheets.insertNewByName("new", oSheets.getCount())

テーマ : Libreoffice
ジャンル : コンピュータ

ファイルのコピー

ファイルをコピーする。

FileCopy コピー元ファイル名, コピー先ファイル名 でコピーできます。

Sub FileCopy()

dim copyfile as string
Dim typ as string
copyfile ="C:\Users\PCUSER\Desktop\やりなおし"
'↑ファイルのパス ↓拡張子 の指定
typ =".ods"
Filecopy "" & copyfile & typ &"", ""& copyfile & "copy" &typ
'コピー元・コピー後の名前。やりなおしcopy.ods が出来上がる。

msgbox "完了"
End Sub

テーマ : Libreoffice
ジャンル : コンピュータ

プロフィール

とも

Author:とも
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
検索フォーム
RSSリンクの表示
リンク
QRコード
QR