Cell操作
[ Cellの書式設定(Property) ]
Sub SampleCode()
Dim oDoc as Object, oCtrl as Object, oFrame as Object
Dim oDispatcher as Object
Dim oProp(0) as new com.sun.star.beans.PropertyValue
oDoc = ThisComponent
oCtrl = oDoc.getCurrentController()
oFrame = oCtrl.getFrame()
oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
'
oDispatcher.executeDispatch(oFrame, ".uno:ResetAttributes", "", 0, Array())
'
msgbox "Success" & Chr$(10) & "( DispatchHelper )"
End Sub
Sub SampleCode()
Dim oDoc as Object
Dim oNumberFormats As Object
Dim oLocale As New com.sun.star.lang.Locale
Dim oDF(12) as String
Dim oKeyNo(12) as Long
oLocale.Language = "ja"
oLocale.Country = "JP"
oDoc = ThisComponent
oNumberFormats = oDoc.NumberFormats
oDF(0) = "#,##0"
oDF(1) = "#,##0.#0"
oDF(2) = "0%"
oDF(3) = "0.00%"
oDF(4) = "[$¥-411]#,##0;-[$¥-411]#,##0"
oDF(5) = "[$¥-411]#,##0;[RED]-[$¥-411]#,##0"
oDF(6) = "YYYY/MM/DD"
oDF(7) = "YYYY年MM月DD日(AAAA)"
oDF(8) = "GE.M.D"
oDF(9) = "HH:MM"
oDF(10) = "HH:MM:SS"
oDF(11) = "0.00E+00"
oDF(12) = "# ??/??"
'
oDisp = "[ Number ] " & Chr$(10)
for i = 0 to 1
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ Percent ]" & Chr$(10)
for i = 2 to 3
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ Current ]" & Chr$(10)
for i = 4 to 5
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ Date ]" & Chr$(10)
for i = 6 to 8
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ Time ]" & Chr$(10)
for i = 9 to 10
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ 指数 ]" & Chr$(10)
for i = 11 to 11
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
'
oDisp = oDisp & "[ 分数 ]" & Chr$(10)
for i = 12 to 12
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
'
MsgBox(oDisp, 0,"表示キーNo.(LO7.5.2.2)")
End Sub
【 解説 】
セルの書式設定の表示キーNo.を取得するコードです。
表示キー番号は、ドキュメント内のセルに数値形式を適用する際に使用される識別子です。
-1 は設定なし。
表示キー番号は、com.sun.star.lang.Locale によって値が変わります。
数値の表示はロケールに依存し、数値は、
地域、文化に応じた慣習/規則に従ってフォーマットされるためです。
例えば、1.000 は 日本では 小数点3位まで記した 1 ですが、
ドイツでは 千 を意味します。
以下のコードを実行すると数値の区切りが
日本とUSA : 「,」カンマ
ドイツ(欧州) : 「.」ピリオド
と地域によって異なることが分かります。
言語フィールド(.Language)には、ISO-639によって定義された小文字の2文字の言語コードが指定されます。
国フィールドには(.Country)、ISO-3166によって定義された大文字の2文字の国コードが指定されます。
Sub SampleCode()
Dim oDoc as Object
Dim oNumberFormats As Object
Dim oLocale As New com.sun.star.lang.Locale
Dim oDF(1) as String
Dim oKeyNo(1) as Long
Dim oLng as String, oCnt as String
for k = 1 to 3
select case k
case 1
oLng = "ja":oCnt = "JP": oDisp = "日本"
case 2
oLng = "en":oCnt = "US": oDisp = "USA"
case 3
oLng = "de":oCnt = "DE": oDisp = "ドイツ"
End Select
oLocale.Language = oLng
oLocale.Country = oCnt
oDoc = ThisComponent
oNumberFormats = oDoc.NumberFormats
oDF(0) = "#,##0" 'カンマ区切り
oDF(1) = "#.##0" 'ピリオド区切り
'
oDisp = oDisp & Chr$(10) & "[ Number ] " & Chr$(10)
for i = 0 to 1
oKeyNo(i) = oNumberFormats.queryKey( oDF(i), oLocale, false )
oDisp = oDisp & oDF(i) & " => " & oKeyNo(i) & Chr$(10)
next i
oDisp = oDisp & Chr$(10)
MsgBox(oDisp, 0,"表示キーNo.(LO7.5.2.2)")
next k
End Sub