とりあえず、汎用化できたツールを3件紹介します。
記事上にコードを載せていますが、Calc ドキュメントとしてもダウンロードできます。
(1) INI ファイル操作関数 ( Ver 2.2 , 2009/ 7/ 22 )
http://blog.livedoor.jp/addinbox/archives/51216559.html
(2) セル選択ツール RefEdit ( Ver 1.2.0 , 2009/ 8/25 )
http://blog.livedoor.jp/addinbox/archives/51219982.html
(3) アイコン画像ロードツール ( Ver 1.0 , 2009/ 7/ 5 )
http://blog.livedoor.jp/addinbox/archives/51229905.html
AddinBox/VBAユーザーの為のOpenOffice.org 備忘録 『ユーザー定義関数の一覧』
http://blog.livedoor.jp/addinbox/archives/51249421.html
ツール3件「INIファイル , RefEdit , アイコンロード」
ツール3件「INIファイル , RefEdit , アイコンロード」
最後に編集したユーザー K.Tsunoda [ 8月 25, 2009, 10:52 pm ], 累計 5 回
Re: ツール3件「INIファイル , RefEdit , アイコンロード」
ブログを見させて頂きましたが、これは凄いですね!
特にINIファイルからイメージを読み込んでボタンに貼り付ける関数などは、目をみはるものがあります。
マクロに関して相当深い造詣をお持ちなのだと思います。
今後も驚くべきマクロが登場するかと思うと楽しみです。
是非これからも頑張ってください!
特にINIファイルからイメージを読み込んでボタンに貼り付ける関数などは、目をみはるものがあります。
マクロに関して相当深い造詣をお持ちなのだと思います。
今後も驚くべきマクロが登場するかと思うと楽しみです。
是非これからも頑張ってください!
Re: ツール3件「INIファイル , RefEdit , アイコンロード」
parpyさん、こんにちは & はじめまして。
>特にINIファイルからイメージを読み込んでボタンに貼り付ける関数
ありがとうございます。
貼り付けの中核部分である はにゃ?さんのコードを見たときには、
「OOoでは、こんな事をしなければいけないのか!」と「こんな方法が有るのか!」という
落胆と驚きの相反する思いがありました。
RefEdit ・ INIと作る内に、INIと組み合わせることを思いつき、
「こんな事をしなければいけないのか!」という部分を上手い具合に隠せたと思います。
ただ、まぁ、【OOo 内の画像】をこんな風(ビットパターンとして取り出す)に使うことには
「良いのかな?」という感じもしてはいるのですが、全く関係の無い他の事に使う訳でなく、
OOo 自身への利用なのだからという事で許して貰おうとところでしょうか・・・
>今後も驚くべきマクロが登場するかと思うと楽しみです。
最終的には、エクセルのkt関数アドイン&kt電話郵便アドインをひとつにまとめた形で
作り上げる予定です。その間でも単発で効果的な機能は公開して行こうかと思います。
>特にINIファイルからイメージを読み込んでボタンに貼り付ける関数
ありがとうございます。
貼り付けの中核部分である はにゃ?さんのコードを見たときには、
「OOoでは、こんな事をしなければいけないのか!」と「こんな方法が有るのか!」という
落胆と驚きの相反する思いがありました。
RefEdit ・ INIと作る内に、INIと組み合わせることを思いつき、
「こんな事をしなければいけないのか!」という部分を上手い具合に隠せたと思います。
ただ、まぁ、【OOo 内の画像】をこんな風(ビットパターンとして取り出す)に使うことには
「良いのかな?」という感じもしてはいるのですが、全く関係の無い他の事に使う訳でなく、
OOo 自身への利用なのだからという事で許して貰おうとところでしょうか・・・
>今後も驚くべきマクロが登場するかと思うと楽しみです。
最終的には、エクセルのkt関数アドイン&kt電話郵便アドインをひとつにまとめた形で
作り上げる予定です。その間でも単発で効果的な機能は公開して行こうかと思います。
INIファイル操作関数 アップデート
INI ファイル操作関数 ( Ver 2.1 , 2009/7/12 ) バグ修正です。
コード: 全て選択
-- IniSecExist --
Case Else
NG IniKeyValueList = vntIniData 'Other error
^^^^^^^^^^^^^^^
OK IniSecExist = vntIniData 'Other error
-- IniGetValue --
If (argKey = "") Then
NG IniKeyValueList = CVErr(519) ' #VALUE!
^^^^^^^^^^^^^^^
OK IniGetValue = CVErr(519) ' #VALUE!
For i = 1 to UBound(vntKeyValueList, 1)
NG If (argKey = vntKeyValueList(i, 1)) Then
OK If (UCase(argKey) = UCase(vntKeyValueList(i, 1))) Then
最後に編集したユーザー K.Tsunoda [ 7月 22, 2009, 4:01 pm ], 累計 1 回
INIファイル操作関数 アップデート
INI ファイル操作関数 ( Ver 2.2 , 2009/7/22 )をアップデートしました。
IniBatchGetValue / IniBatchUpdValue 関数を追加しましたので、
一度に複数のKeyの更新を行なうのが楽になります。
IniKeyValueList で一括で Key-Value配列データを取り込み。
IniBatchGetValue/IniBatchUpdValue で配列上で更新を実施。
IniRewriteBatch で更新済み Key-Value配列データを一括出力。
IniBatchGetValue / IniBatchUpdValue 関数を追加しましたので、
一度に複数のKeyの更新を行なうのが楽になります。
IniKeyValueList で一括で Key-Value配列データを取り込み。
IniBatchGetValue/IniBatchUpdValue で配列上で更新を実施。
IniRewriteBatch で更新済み Key-Value配列データを一括出力。
セル選択ツール RefEdit アップデート
セル選択ツール RefEdit をアップデートしました。 ( Ver 1.1.1 , 2009/ 8/ 8 )
イベント引数の [ oEvent ] のタイプが省略( Variant )になっていましたのでタイプを明記しました。
( oEvent ) ⇒ ( oEvent As com.sun.star.sheet.RangeSelectionEvent )
補) バグ修正ではありません。
タイプ省略( Ver 1.1.0 ) でも問題なく動作します。
イベント引数の [ oEvent ] のタイプが省略( Variant )になっていましたのでタイプを明記しました。
( oEvent ) ⇒ ( oEvent As com.sun.star.sheet.RangeSelectionEvent )
補) バグ修正ではありません。
タイプ省略( Ver 1.1.0 ) でも問題なく動作します。
セル選択ツール RefEdit アップデート
セル選択ツール RefEdit をアップデートしました。 ( Ver 1.2.0 , 2009/ 8/25 )
「配列変数の代入がリンクだった」に係わる修正です。
http://blog.livedoor.jp/addinbox/archives/51261348.html
【 RefEditExecution 】
一緒にいれてあるサンプルマクロを試すと、この処置の効果が判ります。
3個の RefEdit でセル選択して、チェックボタンを押すとMsgBoxに選択内容が表示されます。
本体マクロの上記修正箇所を【修正前】に直すと、MsgBox には3つとも同じ内容(最後の選択)で表示されてしまいます。
「配列変数の代入がリンクだった」に係わる修正です。
http://blog.livedoor.jp/addinbox/archives/51261348.html
【 RefEditExecution 】
コード: 全て選択
Global Function RefEditExecution(ByRef argRefEditValue As Variant) As Boolean
RefEditExecution = Not blnRefEditFinish
If blnRefEditFinish Then
argRefEditValue = aryRefEditValue
End If
End Function
↓
Global Function RefEditExecution(ByRef argRefEditValue As Variant) As Boolean
Dim vntRefEditValue As Variant
RefEditExecution = Not blnRefEditFinish
If blnRefEditFinish Then
vntRefEditValue = aryRefEditValue
'The movement of the array variable to the new memory area by [Redim Preserve].
Redim Preserve vntRefEditValue(0 to 8)
argRefEditValue = vntRefEditValue
End If
End Function
3個の RefEdit でセル選択して、チェックボタンを押すとMsgBoxに選択内容が表示されます。
本体マクロの上記修正箇所を【修正前】に直すと、MsgBox には3つとも同じ内容(最後の選択)で表示されてしまいます。