3流プログラマのメモ書き

元開発職→現社内SEの三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

OpenOffice

(OpenOffice)Calcでファイル保存時に「書き込みエラー」となってしまう Part2

(OpenOffice)Calcでファイル保存時に「書き込みエラー」となってしまう と関連ある内容です。 バージョンはApache OpenOffice3.4.1です。 とあるodsファイルを開いて保存しようとすると以下のエラーが発生しました。 書き込みエラー. ファイルに書き込みできま…

OpenOffice3.41を展開するためのVBScript

現在、LAN内の端末はOpenOffice3.2や3.3を使っています。 これを一斉に3.41にアップグレードする必要が生じました。 設定もデフォルトだったので、こちらである程度設定したものを展開したいと思っています。 グループポリシー等の自動展開機能を使わず、ユ…

OpenOffice3.3以降で設定ファイルが変わったらしい

以前OpenOffice3.2の設定項目と対応する設定ファイルで、OpenOffice3.2の設定ファイルの事を書きました。 3.2では設定が各ファイルに分散していましたが、どうやら3.3から設定が一つのファイルにまとめられたようです。 設定ファイルは、以下となります。 %a…

VBScriptでApacheOpenOffice3.41の設定用XMLファイルを変更して保存

ApacheOpenOffice3.41の設定を全ユーザで変更しようと思っています。 ApacheOpenOfficeの設定はXMLファイルなので、グループポリシーのログオンスクリプトを使い、VBScriptで設定ファイルを修正して保存するという仕掛けです。 なお、毎回ログオン時に適用す…

(OpenOffice Basic)自身のファイルの最終更新日時を知りたい

セルの中に自身のファイルの最終更新日時を入れたいという話です。 自身のファイルパスは、(OpenOffice Basic)自身のファイルパスを表示するの方法で取得できます。 ファイルの更新日時は、FileDateTime 関数で取得できるようです。 とういことで、下記のよ…

(OpenOffice)Calcでセルの中をコピーしようとするとフリーズする

Windows7環境の OpenOffice3.3 で、Calc使ってるんですが、あるCalcファイルでセルの中の文字列に対しコンテキストメニューを表示してコピー等の操作を使用とすると、以下のようにOpenOfficeが落ちてしまいます。 (他のファイルはなりません) エラーの内容を…

(OpenOffice)Writerで原稿用紙レイアウトを使う方法

Writerで原稿用紙レイアウトで印刷したいというユーザがいたんで調べてみたら、Going My Way: OpenOffice.org 用 縦書き原稿用紙の作成方法にドンピシャな答えが載ってました。 以下のページ設定でできるようです。 メニューバー ↓ 書式 ↓ ・ページ タブ 配…

OpenOffice3.3はWindows7でmsiインストールしようとするとダメっぽい

OpenOfficeをActiveDirectoryで展開するの前半で、グループポリシーの[ソフトウェア]インストール機能を使ってOpenOfficeを展開する方法を書きました。 今回Windowsドメイン内にWindows7の端末が参加するということで、最新版である OpenOffice3.3 をグルー…

(OpenOfficeBasic)印刷プレビューかどうかを判断する

OpenOffice3.2のマクロ(Basic)で、現在のビューが印刷プレビューかどうかを判断する方法です。 自力では難しそうだったので、ググったら OOobbs2/142 でどんぴしゃな方法が載っていました。 100%コピペなコードですが、転載させてもらいます。 Function IsPr…

(OpenOffice)メニューバーのフォントが汚い

WindowsXPでOpenOffice3.2を使ってますが、OpenOfficeのメニューバーのフォントが小さくつぶれた用に汚く見える現象が出ています。 下記のような感じです。 で、調べると解決策として、Windowsの画面のプロパティから、フォントを設定する方法(デザインの詳…

(OpenOffice,Excel)二つの日付の経過(期間)を求める

年齢計算や経過日数を求めたい場合があります。 その場合、Excelだと、DATEDIF 関数使うと有用なようです。 書式は下記の通りです。 =DATEDIF(開始日,終了日,単位) 単位は下記のようになるようです。 "Y" 指定した期間の年数(満年数)を表示 "M" 指定した…

(OpenOffice Basic)Calcでオートフィルタを設定する

OpenOffoce 3.2です。 Calcでオートフィルタを設定するマクロは、下記のようにすればいいようです。 Dim oController As Object Dim oSheet As Object oController = ThisComponent.getCurrentController() oSheet = ThisComponent.Sheets(0) 'まずオートフ…

(OpenOffice)OppenOffice.orgがOracleから独立したらしい

OpenOffice.orgの開発コミュニティがOracleから独立したようです。 ただ今のところ、OracleがOpenOffice.orgの商標権握っているようなので、スイート名は暫定的に「LibreOffice」になっているようです。 Javaの父と呼ばれる開発者もOracle退社したようですし…

CalcでVLOOKUP関数に()があると期待した値が返ってこない

OpenOffice Calc 3.2です。 Calcにて vlookup 関数で検索値に半角カッコ ( ) が入っていると#N/Aになるという現象が発生しました。 で、調べたところ、faq/4/872 - OpenOffice.org Q&Aに答えがありました。 どうやら、Calcでは数式内に正規表現を使えるよう…

(OpenOffice)Calcの行数、列数、シート数の限界

OpenOffice Calcの各バージョンとExcelとの比較表です。 ┌──────┬────┬────┬─────────┬─────────┬─────┐ │ │OOo 1.0 │OOo 2.0 │Ooo3 │Excel 2003 │Excel 2007│ ├──────┼────┼────┼─────────┼─────────┼─────┤ │最大行数 │32000 │65536 │65536 │65536 │104857…

(OpenOffice Basic)Calcでセルアクセスの高速化

OpenOffice3.2です。 ThisComponent.Sheets(0).getCellByPosition( col , row ).setString("") などで多数のセルにアクセスすると非常に遅くなります。(特にセルのカラー等スタイルを変更する場合) 例えば選択した約12000個のセルに一斉に書き込みを行い、セ…

(OpenOffice Basic)Calcでデータの入っている最終行・最終列を求める

OpenOffice 3.2 です。 VBAだと、下記のようにUsedRangeからできるようです。 Sub CellCnt() Dim lngYCnt As Long Dim intXCnt As Integer lngYCnt = Worksheets("Sheet1").UsedRange.Rows.Count intXCnt = Worksheets("Sheet1").UsedRange.Columns.Count Ms…

(OpenOffice Basic)Calcでイベントを割り当てる方法

OpenOffice 3.2 Basic で文書を開いた時などのイベントを割り当てる方法です。 Excel VBAの時は Workbook の Open イベントハンドラとかに書く必要がありました。 しかし、OpenOfficeの場合は、イベントハンドラとなるメソッドを書いて(IDEではなく)シートの…

(OpenOffice Basic)Calcでセルのハイパーリンクを作る方法

OpenOffice3.2 Basic で Calc のセルのハイパーリンクを作る方法です。 とりあえず、Sheet1.B2セルに、Sheet2.A2セルへのリンクするサンプルコートです。 'リンク元シート取得 Dim oSheet As Object oSheet = StarDesktop.CurrentComponent.Sheets.getByName…

(OpenOffice Basic)Calcで行と列の表示・非表示と選択セルの種類

OpenOffice 3.2.0です。 基本的に列ならセルオブジェクトの Columns.IsVisible 、行ならセルオブジェクトの Rows.IsVisible に True ,False をセットすることで設定できるようです。 oSheet.getCellByPosition( 0 , 0 ).Columns.IsVisible = True oSheet.get…

(OpenOffice Writer)フォントワークギャラリーの縦書きと選択方法

OpenOffice3.2です。 OpenOfficeでフォントワークギャラリーを配置しても、マウス左クリックでは容易に選択できないことがあります。 その時は、Ctrlキーを押下しながらクリックすると容易に選択できます。 で、本題の縦書きにする方法です。 フォントワーク…

(OpenOffice Basic)Calcで枠線を引く方法

OpenOffice Basic で Calc のセルの枠線(罫線)を引く方法です。 先にBorderLineオブジェクトを作ってから、セルにセットするという流れになるようです。 Dim oSheet as object oSheet = ThisComponent.Sheets.getByName("Sheet1") Dim oCell as object oCell…

(OpenOffice Basic)Calcでセルのフォントの設定を変更する

OpenOffice Basic で Calc のセルフォントの設定を変更する方法です。 Dim oSheet as object oSheet = ThisComponent.Sheets.getByName("Sheet1") Dim oCell as object oCell = oSheet.getCellRangeByName("C1") oCell.setString("あああ") '日本語フォント…

(OpenOffice Basic)Calcでセルテキストの配置を変える

OpenOffice Calc で セルの書式設定 → 配置タブ でやっている設定を OpenOffice Basic で実現する方法です。 とりあえず下記にサンプルを載せますが、セルオブジェクトのOrientationで細かく設定できるようです。 Dim oSheet as object oSheet = ThisCompone…

(OpenOffice Basic)自身のファイルパスを表示する

マクロを動かしている自身のファイルパスをとるときは下記のようにできます。(参考先そのままですが...) Sub Macro01 Dim oUrl As String 'oUrl = StarDesktop.CurrentComponent.getURL oUrl = ThisComponent.getURL MsgBox oUrl MsgBox ConvertFromUrl(oUrl…

(OpenOffice Basic)テキストファイルの書き込み

OpenOffice Basicを使ってのテキストファイルへのデータ出力方法です。 サンプルそのままですが、この辺はVBAと対して変わらないようですね。 Dim FileNo As Integer Dim CurrentLine As String Dim Filename As String Filename = "c:\data.txt" ' ファイル…

(OpenOffice Basic)ファイル保存ダイアログを表示する

ファイルの保存ダイアログを表示するには下記のようなコードにすればいいようです。 Dim oFilePicker As Object Dim nDlgResult As Integer Dim sFiles() As String Dim sFilename As String 'dialogs.FilePicker でダイアログが使える oFilePicker = create…

(OpenOffice Basic)Calcでセルの取得と値の取得・設定

まず、セルを取得(アクセス)する方法です。 VBAだと下記のようになります。 '単一セルをセル名にて指定するにはこうなります。 Dim oCell As Object Cell = ThisComponent.Sheets("Sheet1").getCellRangeByName("C1") '複数セルをセル名で指定するにはこうな…

(OpenOffice Basic)現在選択しているセルの位置を得る

OpenOffice Basic(3.2)でユーザーが現在選択しているセル(カレントセル)の位置を得る方法です。 Dim oActiveCell As Object '現在選択中のセルを取得 oActiveCell = ThisComponent.CurrentSelection MsgBox "シート:" & oActiveCell.CellAddress.Sheet & _ "…

(OpenOffice Basic)Calcシートの保護

OpenOffice Basic(3.2) で Calc のシートの保護をかける方法です。 Dim oSheet As Object oSheet = ThisComponent.Sheets(0) 'シートの保護 oSheet.Protect("passwd") 'パスワード passwd でシート保護 'シートの保護の解除 oSheet.Unprotect ("passwd") 参…