【StarSuite Basic/OpenOffice.org Basic】
2 :
nat:2006/10/06(金) 20:10:10
2get
developerguide がwebで読めるのか。これは助かるな。
ZIPアーカイブされたのをローカルに保存しておく手間が省ける。
初歩的な質問でごめんなさい。
ExcelのVBAでは
Worksheets("シート名").Activate
と書くところを、OOo Basicの場合ではどう書けばいいんでしょうか?
7 :
ハンカチ仮面:2006/10/10(火) 20:24:01
>>6 StarBasicでは
ActiveWindow.JumpToTable(1)
だと思います。(1)は左から何番目の表かを表します。
OpenOffice.org Calcをデータベースサーバーのクライアントソフトに
しようと思うんですが、どなたか一緒に情報探してくれる人いませんか。
10 :
なしたか:2006/10/19(木) 08:53:11
はじめまして。Basicでの質問をさせていただきます。 現在Calcで使用するためのURLエンコーディングプログラ
ムを作成して おります。勉強もかねてC言語によるDLLを作成・利用しエンコーディング 結果を取得しようと考えています。
そこで、まずはテストということでDLLに文字列を渡し、その結果をbasic で表示するプログラムを作成しようとしております。プログラムは以下
のとおりです。
REM ***** BASIC *****
Declare Function MyMessageBox Lib "test.dll" Alias "MyMessageBox" (str As String)
Sub MessageBoxStrTest()
Dim s1 as String
Dim s2 as String
s1="あ"
s2=MyMessageBox(s1)
msgbox(s2)
End Sub
REM *** BASIC END HEAR ***
11 :
なしたか:2006/10/19(木) 08:54:18
Cプログラムは以下のとおりです。
//-----------------
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include"test.h"
const char* __stdcall MyMessageBox(const char* str){
MessageBox(0,str,"Title",0);
return str;
}
//-------ここまで--------
ちなみにwindowsに最初から提供されているMessageBox()関数ではちゃんと 「あ」という文字が表示されます。
basicに返戻したあとでは文字列が 「-4424」のように表示されてしまいます。開発環境は以下のとおりです。
OS :WindowsXP Professional SP2
開発言語 :gcc(MinGW)
OpenOffice:OpenOffice.org2.0.3
12 :
なしたか:2006/10/19(木) 11:57:59
自己レスです。上記の例で1箇所自分で間違いを発見しました。
Declare Function MyMessageBox Lib "test.dll" Alias "MyMessageBox" (str As String) As String
のように返礼値がString型であることを明示したので未知数が返ることが
なくなりました。このとき同様に「あ」という文字をdll側に渡すと「・」という
文字がbasic側のmessageboxで表示されます。「a」という文字をdll側に渡す
と「a」という文字がbasic側で表示されます。
どのようにしたら日本語を正しくbasic側に返礼させることができるのでしょうか?
MinGW環境ないんでBCC5.5で試してみた。
UTF-8Nを要求される状況でShift JISを返すから化けるような気がする。
その割に引数の文字列がDLL側で正しく表示されるのがよく分からんが。
MinGWならDLL側でiconv()とか使ってUTF-8Nエンコして返すのが一番早いんじゃないかね。
iconv.h拾ってきて試してみたが、やはりOOo側が認識してないような雰囲気が。
少なくともDLLに正しく文字列は渡ってるんだから、結果としてURIエンコードされるなら
iconv()なくても別に問題ない気がしてきた。
15 :
なしたか:2006/10/19(木) 20:15:29
16 :
なしたか:2006/10/20(金) 10:45:01
#include "urlEnc.h"
char* urlEncode(const char* str){
int i=0;/** strの何番地をみているかを覚えるため **/
int x=0;/** カウンタ **/
int pos=0;/** tmpUrlが何文字入力しているかを覚えるため **/
char *tmpUrl = (char *)calloc(512,sizeof(char));
unsigned char *tmp = (char *)calloc(2,sizeof(char));
unsigned char *tmp1 = (char *)calloc(2,sizeof(char));
unsigned char *tmp2 = (char *)calloc(6,sizeof(char));
while(TRUE){
if( str[i] == 0x00 ){break;}
if( (str[i] & 10000000) == 10000000 ){
tmp[0]=(unsigned char)str[i];
tmp[1]=(unsigned char)str[i+1];
sprintf(tmp2,"%%%X%%%X",tmp[0],tmp[1]);
for(x=0;x<6;x++){
tmpUrl[pos++] = tmp2[x];
}
i++;
}else{/** 単なるアスキーコードの場合 **/
tmp[0]=(unsigned char)str[i];
sprintf(tmp1,"%X",tmp[0]);
for(x=0;x<2;x++){
tmpUrl[pos++] = tmp1[x];
}
}
i++;
}
return tmpUrl;
}
17 :
なしたか:2006/10/20(金) 10:52:09
上のコードでいちおうURLエンコードを行えました。汚いプログラムですが使いたい方がいたらどうぞ。
つづけざまに質問なのですが、VBAを使用していたときには現在開いているIEオブジェクトを以下のように捕らえていました。
WinExist = False
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
If Not InStr(1, ObjWindow.document.Title, "サーバが見つかりません") Then
WinExist = True
Set IE = ObjWindow
End If
Next
Set ObjShell = Nothing
If WinExist = False Then
Set IE = CreateObject("InternetExplorer.Application")
End If
これをそのままbasicで実行してみてもbasicにはFor Each ... in ... という構文がないようで
うまく動作しませんでした。これに変わる方法で現在開いているIEオブジェクトを取得する方法は
ありますでしょうか?
for each nextは他のループに置き換える。
WSHの配列オブジェクト・コレクションはCountで個数、Itemで要素を取得できる。
こっちはOOoとは関係ないのでWSHスレ等で聞くべきだ。
19 :
デフォルトの名無しさん:2006/11/24(金) 13:36:41
VBA がつかえる OpenOffice.org 2.0.2, Novell Edition には 日本語版もあるみたいよ
21 :
デフォルトの名無しさん:2006/12/02(土) 00:11:53
>>19 >Ark
>Debian
>DroplineGNOME
>Frugalware
>Gentoo
>Mandriva
>QiLinux
>Red Hat (FC6)
>Ubuntu
>SUSEおよびSUSE SLED
これらのLinuxディストリビューションのOpenOffice.orgにVBA互換機能が搭載
されていると書いてあったんで、自分はDebianユーザーだからVBA互換機能が
使えるかなと期待したんだけど、どうやら自分が入れたOOo2.0.2にはVBAの
互換機能が搭載されていないみたいだ。ガクリ
VBAコードを含むExcelのファイルを開いてみたんだけど、なにも起こらないし、
コードも見えない。
>>21 Debian使いなら自力で使えるようにしていただきたいですな
捕捉
今の環境ではなく、別の環境で
>>22 Debianのパッケージをそのまんま入れれば
互換機能が使えるという意味かと思ったんですが。
Debian使いだからかえってアプリを入れたり消したり
するのも全部apt依存症で、なんにもできないんです。
>>24 なら、EtchのVMware Player用イメージでも使えばよろし
26 :
デフォルトの名無しさん:2007/01/10(水) 00:30:32
これの本もほしいな
命令/関数を
全て
網羅したやつ。
使える関数、命令何もかも全てが載ってるやつが。
GFDLでね
OOo Basicってそこそこ使えると思うけど、このスレは過疎ってるね。
宣伝して宣伝して
取っ付き難いんだよね。なんか面白そうなサンプルないかな。
>>27 もっとマトモなライセンスはいくらでもあるだろうに…
32 :
デフォルトの名無しさん:2007/04/19(木) 22:19:35
OOo Basic やろうぜ。
34 :
デフォルトの名無しさん:2007/04/30(月) 21:57:52
今日Basic使ってみたけど、VBAとあんまり変わらんね。
十分使える。
35 :
デフォルトの名無しさん:2007/05/09(水) 20:24:34
なかなかナイスなマクロだと思うけどな。
よって、あげ。
36 :
デフォルトの名無しさん:2007/05/21(月) 11:58:04
過疎age
Basicに限定したようなスレタイになっているのが過疎の原因かな
vbaで言うところのCollectionに相当するものってあるんでしょうか?
コードを記述するとき、VBAみたいに勝手に大文字になってくれないのですか?
>>39 それは言語仕様とは関係ないんじゃないすかね?
逆にその挙動は気持ち悪い。
始めたんだが もう挫折した orz
何かいい本ないですか
サンプルが一杯載ったのがあればいいんだが
初心者なんで取り敢えず動くコ-ドをイジって覚えようかと
本屋に昼に行ってみたけどVBばっかりだった。
逆に考えるだ。今いろんなものを作って企画を持ち込めば、本を出せると考えるんだ。
43 :
デフォルトの名無しさん:2007/06/27(水) 18:57:35
>>41 公式ガイドブックの公開版pdfがあると思います。
Chapter9でマクロの解説があるので参考になるかも知れません。
44 :
41:2007/06/27(水) 19:24:09
OpenOffice.org 1.1 Developer's Guide
StarOfficeTM 6.0 Office Suite Basic Programmer's Guide
OpenOffice.org Basicプログラミング Calc
StarSuiteTM 7 Office Suite Basic プログラマ向けガイド
この辺りのやつでいいのかなあ
とりあえず読んで見ます。
廻りに聞く人居ないので、初心者はつまると、お手上げです。
ありがとう
>>6 Sub Hyou3Active
Dim oDocument As Object
Dim oSheet As Object
Dim oCController As Object
oDocument = ThisComponent
oSheet = oDocument.Sheets
oCController = oDocument.CurrentController
oCController.ActiveSheet = oSheet.getByName("表3")
End Sub
49 :
デフォルトの名無しさん:2007/07/18(水) 20:49:01
50 :
デフォルトの名無しさん:2007/07/19(木) 19:08:48
>>50 一応、信用できると思う。
日本人の開発者の個人サイトだから。
52 :
デフォルトの名無しさん:2007/07/20(金) 08:08:15
チューバッカ
厨房ばかりであるさま。
53 :
デフォルトの名無しさん:2007/07/22(日) 21:40:53
54 :
デフォルトの名無しさん:2007/09/17(月) 09:36:10
VB.NETでCalcのファイルを開き、データを取得することができますか?
55 :
デフォルトの名無しさん:2007/10/05(金) 23:30:04
56 :
デフォルトの名無しさん:2007/10/08(月) 23:15:15
誰もいねえのか?
57 :
デフォルトの名無しさん:2007/10/09(火) 19:16:17
過疎っているねアゲ
58 :
デフォルトの名無しさん:2007/10/09(火) 21:23:22
getcellbypotionとか長ったらしいコマンドは止めてくれー!!
普通にCellでいいじゃんか。
59 :
デフォルトの名無しさん:2007/10/10(水) 20:11:36
確かにそうだよな
>>58 飲料(potion)を使って細胞(cell)を取得(get)するのか?
61 :
デフォルトの名無しさん:2007/10/12(金) 13:29:39
>>60 そういうツッコミ方で来ましたかw
たぶんgetCellByPositionの間違いだろね。
62 :
デフォルトの名無しさん:2007/10/16(火) 20:15:21
VBAと完全に互換性をもってほしい。
>>62 それは無理じゃね?
MSさんが許さんぜよ
64 :
デフォルトの名無しさん:2007/10/17(水) 01:17:35
そこを何とか。
MSと契約したNovellが頑張ってるよ
VBAのほうで互換性もたせりゃよかんべよ
67 :
デフォルトの名無しさん:2007/10/17(水) 16:33:27
OOo Basicは習得が難しい。VBAのほうが簡単。
68 :
デフォルトの名無しさん:2007/10/17(水) 22:29:45
OOo Basicは難しくないけど、処理速度が遅すぎる。
ループを回してみると分かるんだけど、どうも条件分岐がトロイみたい。
69 :
デフォルトの名無しさん:2007/10/24(水) 19:47:07
つーか、全体的にもっさりなんだよなOpenOfficeって。
70 :
デフォルトの名無しさん:2007/10/26(金) 00:58:59
もっさりだけならいいが、バグ多すぎ。
CalcでMSXMLで保存→Calcで開くとすごい事にw
俺用メモ:
javavendors.xml
<vendorInfos>
</vendor>
<vendor name="BEA Systems, Inc.">
<minVersion>1.4.1</minVersion>
</vendor>
</vendorInfos>
<plugins>
<library vendor="BEA Systems, Inc.">sunjavaplugin.dll</library>
</plugins>
73 :
デフォルトの名無しさん:2007/10/27(土) 15:44:48
OpenOffice.orgとStarSuite8はどっちがいいのですか?
操作性、PCへの負担、機能性、相互性、現状とこれからの発展など含めて軽く解説をお願いします。
良い方を入れます。
※MSのワード、エクセル、パワーポイントは基本的に使えますし、比較的よく使います。
新しく自作したPCに入れるものを考えています。
>>73 ソフトウェア板に行って基礎から教えてもらうと良いよ。
StarSuite は OpenOffice.org を元にしたパッケージ版だから
両方使えるなら StarSuite にしときな。
75 :
デフォルトの名無しさん:2007/10/28(日) 14:44:10
StarSuite8は色んなフォントが入ってるよな。
76 :
デフォルトの名無しさん:2007/10/30(火) 22:25:02
マンセー!!!!!!
77 :
デフォルトの名無しさん:2007/11/02(金) 17:03:25
???
78 :
デフォルトの名無しさん:2007/11/03(土) 15:37:05
ひゃあああああ
79 :
デフォルトの名無しさん:2007/11/04(日) 20:35:17
80 :
デフォルトの名無しさん:2007/11/04(日) 21:29:17
OpenOffice Basicは処理速度が相当遅いよ。
場合によってはVBAの10倍以上時間がかかるときもある。
一生懸命使ってみたけど、ストレスがたまる。
>>79 > 『Convert Excel VBA to OpenOffice Basic』というサイトを
> 見つけたけど、
あんたは偉い!
82 :
デフォルトの名無しさん:2007/11/05(月) 00:30:53
>>81 実際、どれ位使い物になるか知りたいんですよ。
もっとも来週(訳あって火曜日以降)、会社で試してみるけどね。
うまく動くといいけど、もぐら叩きのデバッグかも。
いらん
84 :
デフォルトの名無しさん:2007/11/26(月) 16:15:02
いる
85 :
デフォルトの名無しさん:2007/11/30(金) 14:16:06
OpenOfficeはショボすぎ。
まあ
>>85 が使ってる様な一部の機能は無いかもしれんが、
普通の用途では十分だよ
87 :
デフォルトの名無しさん:2007/12/01(土) 20:15:30
マクロの処理速度がおせーわ。
もっとキビキビ動かないと。
89 :
デフォルトの名無しさん:2007/12/06(木) 22:56:21
アップするまでもなく、適当にループ回してセルに何か書き込んでみ。
余りの遅さに気が遠くなるから。
90 :
デフォルトの名無しさん:2007/12/07(金) 01:30:59
MS-ExcelのVBAも動作遅いよ。ユーザーフォームのコントロールから
アクティブなセルを一セルずつ移動させるだけで遅延が生じて重い。
91 :
デフォルトの名無しさん:2007/12/11(火) 15:01:34
だから、どっちも遅いんだけど、OOo Basicが極端に遅いってことだ。
場合によってはVBAの10倍くらい遅い。
Python は何をやるにも C の 100 倍くらい遅いけど、
最近では C と同じところでも使われているよ。
何かしらメリットがあればデメリットは覆い隠せる。
93 :
デフォルトの名無しさん:2007/12/11(火) 23:16:14
あんたアホだな。
PythonとCは基本的に用途が異なる言語だろ。
遅いとか早いの問題じゃない。
VBAとOOo Basicは用途が同じ。
それで速度が10倍違えば使えない。
だから、同じ用途で使われていてメリットがあればデメリットを覆い隠せると
せっかく書いたのに読めなかったのかな? 他人の話は聞かない主義の人?
95 :
デフォルトの名無しさん:2007/12/11(火) 23:38:10
じゃあ、OOo Basicのメリットを言ってみな。
『タダ』以外で。
>>95 >『タダ』以外で。
わざわざアホなハードル設けてご苦労なこった。
君も気付いた通り『タダ』なのがメリットだよ。
自分で使うのが無料なだけでなく、家族や友達に
使わせるのも無料だし、PC を複数使い分けていて
全部の PC にインストールしても無料。業務
システムに組み込むのも無料だし、再販しても
ライセンス料は取られない。アップグレードも
無料だし、アップグレードしない自由もある。
インストールするのも自由だし、ソースを書き
換えるのも自由。そう、自由なのも大きな
メリットだね。あとオープン。単にソースコードが
オープンなだけでなく、ファイルフォーマットも
オープンなら、設計者の議論もオープンに公開
されている。それ以外に何か説明が必要かな?
あとクロスプラットフォームなのもメリットだね。
Mac のネイティブ版の開発も進んでいるし。
ちょっと古い OS でもビルド出来る。
ペイントツールとデータベースが付いてるのも良いね。
しかも『タダ』で。
98 :
デフォルトの名無しさん:2007/12/12(水) 00:17:32
たかが数万円のMS-Officeけちって
10倍も処理に時間を食われれば、『タダ』など何の意味もない。
魅力を感じるのはキモヲタニートの君だけだよwww
キモヲタニートくらいしか言う事が無いなら、わざわざ出てこなくて良いのに。
何かまともな反論を思いついたらいつでも書き込んでくれ。
たかがマクロの速度ごときのために、タダで手に入るものの代替物に金を出したくないんだが。
101 :
デフォルトの名無しさん:2007/12/12(水) 11:09:16
発想が貧乏人だなwwww
好きにしたまえ。
www
>>91 > 場合によってはVBAの10倍くらい遅い。
そうか? 俺はそうは思えないけどなあ。そういう実感はない。
>>97 それのみならず、OOoのばあいは、べつにBasicにこだわらなくても、
C/C++でもJavaでもPythonでもコードを書けるわけだしな。
105 :
デフォルトの名無しさん:2007/12/12(水) 16:02:32
C/C++でもJavaでもPythonでもコードを書けないヤツほどそういうこと言うんだよwww
>>104 >それのみならず、OOoのばあいは、べつにBasicにこだわらなくても、
おいおいw
>>105 今は開発環境がタダで楽に作れる時代。
おまけ言語(VBA,OOo Basic)でもそもそする方が終わってる
実際VBAなんてVB厨位しか触らないだろ?
ふむ、つまりEmacsLispも秀丸マクロだかなんだかも、みーんな終わっていると。
# 恐らくはスクリプト言語の便利さを理解できないGUIユーザなんだろうなぁ。
>>107 なんでScript言語やGUIがいきなり出てくんの?w
別に職業マじゃない趣味グラマさんがどうしようが構わないよ
実務でEmacsLispや秀丸マクロの実装ってどんだけだよw
109 :
デフォルトの名無しさん:2007/12/12(水) 20:07:45
あのなー、OOoBasic以外の言語でマクロ書いてるヤツって、どんだけいると思ってるんだ?
普通はVBAだろ。
OOoでC/C++、Java、Python使ってるやつなんて見たことないわ。
>>104は馬鹿。
もしくは引き篭もりのキモヲタニート。
ワーストケースで10倍しか違わないなら問題無いね。
逆に10倍速い処理だってあるだろうし。そもそも実装が
違うんだから性能にばらつきが出るのは当たり前だよ。
ま、10倍というのもどうせ適当なんだろうけど。
証拠も無いし、幾らでも書き散らせるもんね。
相手を罵倒しないとレスも出来ない人間はたとえ
2chでも信用されないという良い例だな。
111 :
デフォルトの名無しさん:2007/12/12(水) 23:24:33
ひとつ言っとくが、VBAより早い処理などひとつもない。
つーか、そんなことも知らないってことは、OOoBasicでマクロ書いたことないんだろ。
まあ、貧乏人は一生OOo使ってろwww
112 :
デフォルトの名無しさん:2007/12/12(水) 23:27:26
まさに一生ものだな。
>>109 自分が BASIC しか書けないからといって、他の人間もそうだと
思うのはちょっと単純すぎるんじゃないかな。
>>111 >ひとつ言っとくが、VBAより早い処理などひとつもない。
言うだけなら何とでも言えるからな。
証拠があるなら別だけど。
117 :
デフォルトの名無しさん:2007/12/12(水) 23:37:33
俺もOOoではBasicしか使えねえけど
Cとかジャバとかパイソンで書いている人が本当にいるかな?
118 :
デフォルトの名無しさん:2007/12/12(水) 23:39:18
お前に証拠を見せる必要なんかないね。
好きなだけOOoでマクロを書きたまえwww
逆に、MS Officeも「マクロではないけど」、
COMで、VBA以外でも同一のAPIが公開されていると言えるよね。
>>117 Java で書いてる奴は見た事がある。
俺がデータの加工するなら一旦 CSV に吐いて
スクリプト言語で処理するなあ。
121 :
デフォルトの名無しさん:2007/12/12(水) 23:43:03
122 :
デフォルトの名無しさん:2007/12/12(水) 23:45:04
普通に考えてOOoではBASIC使うのが便利だろ。
>>119 性能が欲しかったらそういう手を使うのが普通なんだろうね
124 :
デフォルトの名無しさん:2007/12/12(水) 23:46:21
OOoって、ファイルのロードもセーブも凄く遅いよね。
イライラする。
125 :
デフォルトの名無しさん:2007/12/12(水) 23:47:09
当たり前だろ、わざわざ圧縮したり、解凍したりしてるんだから。
>>109 > OOoでC/C++、Java、Python使ってるやつなんて見たことないわ。
このスレッドを上のほうから読んだ?
UNO は結構みんな使ってるんじゃないかと
そんなスピードを求める処理とか、大きな遅延が生じるほどの負担を
強いる大きな処理とかをVBAとかOOo Basicでふつう書くか。
そういう場合はもっと適切なべつの選択肢があるだろうに。
130 :
デフォルトの名無しさん:2007/12/13(木) 08:40:42
>>129 話が飛躍しすぎなんだよ。
P3とC2Dがあれば、C2DのPCを使うだけのこと。
わざわざP3を選択するのは無意味。
誤爆?
132 :
デフォルトの名無しさん:2007/12/13(木) 10:38:54
P3 = OOo
C2D = Excel
134 :
デフォルトの名無しさん:2007/12/13(木) 17:06:31
>>133 過疎ってまともな書き込みのないスレで何言ってるんだ?
スレが出来て1年以上たつのに134だぞwww
ばーかwww
135 :
デフォルトの名無しさん:2007/12/13(木) 21:34:43
ばかれーーーーーす。。。。。。。
ユーザーでOOo使ってる所と仕事した事ある人いる?
Linux使っているところはOOoもそれなりに使っているよ。
139 :
デフォルトの名無しさん:2007/12/14(金) 17:28:20
>>138 お前、ほんとうにバカだなwwwwww
友達とかいないだろ。
かわいそうにwwww
自己紹介乙な人が居るな...
>>137 OOoアウトプットな物作ったりした?
なんかクリティカルな問題あった?
>>138, 140
改行制御すら出来無い奴相手すんな
142 :
ムームー:2007/12/15(土) 23:09:21
OpenOffice.org 2.3.1 (Windows) を使っています。
データベースソフト Base を使っているのですが、
OpenOffice.org Basic のオブジェクト モデルというのは
どこで知ることができるでしょうか?
これが分らないと Basic を書けない。。。
OpenOffice.org Basic のヘルプか、Sunが配布してるプログラミングガイドで見た覚えがある。
145 :
137:2007/12/18(火) 10:49:01
>>141 私の関わるプロジェクトでは、subversionで差分が取れるという理由もあって資料はodsで作っておくことが多い。
外部に提出するときは、Windows版でxlsに保存し直すけどね。
# Linux版だとフォントの関係もあって、xlsに保存してもレイアウト崩れ捲くるのが問題といえば問題。
ま、マクロは殆ど使ってないんだけどね。
1ヶ月前に、OpenOffice.org のマクロの動作速度に関する議論があるけど、
>>103 みたいに OOo の速度で問題ないって言う人は
VBA と OOo とで両方同じマクロを書いて比較したことないんだろうなあ。
俺は自分で書いた VBA マクロを OOo に移植してるんだけど、
特にセル更新まわりの OOo の遅さにはびっくりしたよ。
配列をまるごとセルに突っ込む方法を駆使すればなんとか使えるレベルになるけど、
それでも同じ方法をつかった VBA よりも遅いし、
その高速アクセス法は検索してもなかなか見つからないのが困りもの。
オープンソースを擁護したがる人は頑固だから
上の醜い争いにあるようになかなか認めたがらないんだろうけど。
まー、バージョンが上がるにつれどう改善されていくか、のんびり見守るけどね。
見守るってのは、口を出すことじゃないよ。
自分に都合の悪い意見は真っ赤になって反論するのが信者と呼ばれる人のメンタリティだから
>>146 セル更新中にリフレッシュとめてないんじゃないの?
そんな素人じゃないから。
(A)画面更新止めずに1セルずつ書き込む方法
(B)画面更新止めて1セルずつ書き込む方法
(C)画面更新止めた上で setDataArray を使って配列をまるごと表に書き込む方法
を全部試したが、数千を超えるデータを書き込む場合、唯一使い物になる方法は(C)のみ。
それが
>>1 のオフィシャルのプログラミングガイドに書いてないのにあきれた。
ちなみに(A)〜(C)に対応する方法はもちろん VBA にも全部あるが、
対応するもの同士を比較すれば全部VBAの方が高速だし、
なによりVBA の場合、(A)はともかく(B)も(C)もまともな速度で動く。
OOoってJavaVMで動いてるんだっけ?
>>151 OOoはJavaVMで動いてないよ。
例外としてBaseの標準DBにだけjavaが使われているよ。
OOoはれっきとしたネイティブアプリケーションです。
動作がもっさりのは、複数のOSで動かすために最適化に制約が多いだろうことと、
単に実装がウンコであろうことの両方が原因じゃないかな。
いくらもっさりだからってJavaをひきあいに出すのはJavaに失礼だ。
155 :
デフォルトの名無しさん:2008/01/14(月) 15:29:08
>>153 最古のコードと最新のコードが混在してて、そのコード間の整合性を取り持つために
ひどいスパゲッティになってるって
ノーベルの中の人が嘆いてた
オープンソースの弊害って感じかね
NetScapeが重たくなってどうしようもなくなってあれだからな
反面教師にしてOOoにはがんばってもらいたい
結局、FireFoxはネスケのコードが使い物にならなかったから、1から書き直したらしいね
OOoもどうなることやら・・・
なんか話が間違ってないか?
「Netscape6 は Netscape4 のコードが使い物にならなかったから…」ならわかるけど。
Netscape6 から Firefox では GUI は大幅に刷新されているが、
レンダリングエンジンの Gecko 部分は基本的には変わらなかったはず。
マジで?
勘違いしてたみたいだ
>>159 Netscape4のほうがよっぽどスイスイ動いて軽快だったのにね。
なんで一から書き換えちゃったんだろ?
>>161 一見スイスイ軽快に動いていたように見えたが、JavaScript 絡みで頻繁に落ちる、
CSS はまともに解釈しない、Java の起動に1分くらいかかる、などで、
それらの技術の普及を阻害しており、百害あって一利なしのブラウザだったんだよ。
本当に使ったことあるのか?
MIDIのプラグインを起動するときなぜかJavaが起動するなんてのも有ったな・・・
>>159 > Netscape6 から Firefox では GUI は大幅に刷新されているが、
> レンダリングエンジンの Gecko 部分は基本的には変わらなかったはず。
裏を返せばレンダリングエンジン以外捨てちゃったようなもんだよな。
OOoもいずれそうなるかもね。
OOoはGUIより内部的な問題が多そうだけど
>>162 ずっとNetscapeユーザーだったけど、それは実感とずれている。
Linux版のはたしかに頻繁に落ちたけど、Windows版はそうでもなかったよ。
javaアプレットなんてめったに使わないし、たとえ起動に1分かかったとしても
その他の利点でNetscape6よりコミュニケータのほうがずっと軽くてよかった。
JavaScriptで落ちたりしたことなどめったになかったはず。
当時はCSSもちゃんと解釈していた。Netscape6が出てきたときにはなんで
こんな糞重いブラウザになっちゃったんだろうって印象しかなかったな。
> 当時はCSSもちゃんと解釈していた。
それはない。ネスケ4がいつまでも息絶えなかったおかげで「JavaScript は基本オフ」とか
「CSSは使わない」とかおかしなローカルルールがまかり通ってしまった。
JavaScritp オンにしとくと CSS 関連で落ちたりもしたし。
質的には IE4 の方が相当マシだったからネスケ4は凋落していったんだが、
ネスケ信者はいまだにそれを認めてないのか?
うん
Netscape4 信者と OpenOffice.org 信者は重なってるのか。
どうりでコミュニティが醜いはずだわ。
Netscape4www
開発スタッフが現在の OOo のパフォーマンスに危機感を抱いていない限りそれはないだろ
過疎ってるな
176 :
デフォルトの名無しさん:2008/03/20(木) 20:12:37
過疎ってるね
ちなみに、2.4はRC6まで出ている
本リリースがいつになる事やら・・・
立てる板が悪いんじゃ?
一応マクロとかその辺の話題についてのスレだと思うんだけど。。。
ならなおさら
ExcelVBAのほうが簡単だし…
わざわざ覚える気にならん
Pythonつかえるんだっけ?
Basic ですら使う人は少ないのに Python 使ってる人なんてどんだけいるのやら
利用者は Basic >> Java >> Python くらいの印象かな
OOo3のDeveloper Preview入れてみたけど、マクロのパフォーマンス上がってないね
OOo3のBeta入れてみたけどAuto Filterで抽出→コピペで複数行置換→表示されていない間の
部分まで置換されてガックリだったのが抽出結果だけが置換されるようになっててまた
Excelに一歩近づいた感じ。
187 :
デフォルトの名無しさん:2008/05/13(火) 03:45:00
StarOfficeも9になんのかねえ
やめてくれよな
OOo のオブジェクトブラウザその1
X-Ray tool
ttp://www.ooomacros.org/dev.php#101416 形態: OOo Basic マクロ
インストール: ドキュメント内の "Install Xray" ボタンを押す。
利用:
Sub Main
Xray ThisComponent
End Sub
利用前に XrayTool ライブラリを読み込んでおく必要がある。
以下のコードをどこかのライブラリのモジュールに保存、ツール - カスタマイズから
アプリケーションの開始イベントに設定するとよい。
Sub LoadingLibraries
BasicLibraries.LoadLibrary("XrayTool")
End Sub
表示されるのはモダルダイアログで、ページごとにプロパティやメソッド、
インターフェースおよびサービスの情報が参照できる。
メソッドは引数の無いもののみ呼び出すことができ、連続してその値に関する情報を参照できる。
Configuration ボタンを押して IDL ガイドおよびブラウザの設定をしておけば SDK ドキュメントを参照できる。
OOo Basic 以外の言語から利用するには、ScriptProvider を利用する必要があり少し面倒。詳細はマニュアル参照。
特徴:
ユーザーが多い
引数のあるメソッドが取得できない
モダルダイアログ
OOo のオブジェクトブラウザその2
Object Inspector
ttp://wiki.services.openoffice.org/wiki/Object_Inspector 形態: Java で書かれたサービス
インストール:
ttp://api.openoffice.org/Projects/ObjectInspector/Inspector.oxt からダウンロード
ツール - 拡張機能マネージャから追加する。(要 Java)
(ソースコードは OOo SDK 付属)
利用:
Sub Main
oInspector = createUnoService("org.openoffice.InstanceInspector")
oInspector.inspect(ThisComponent, "My Document")
End Sub
OOo Basic からいつも上記の様に記述するのが面倒であれば、Standard ライブラリなどに次のようなものを入れておく。
Sub Inspector( oTarget As Object )
oInspector = createUnoService("org.openoffice.InstanceInspector")
oInspector.inspector( Target, "target" )
End Sub
ツリー表示でメソッド、プロパティ、インターフェースおよびサービスが表示される。
ノードの展開で値を取得できる。引数のあるメソッドも値の型の制限内で呼び出すことができる。
また、C++、Java、OOo Basic のコードを生成してくれる。該当の IDL ガイドページを開くこともできる。
特徴:
コード生成
多くのメソッドが呼び出せる
ツリーが見難い
ノンモダル (Java Swing によるウィンドウ)
突然どうした?
OOo のオブジェクトブラウザその3
MRI
ttp://extensions.services.openoffice.org/project/MRI 形態: Python-UNO を利用したサービス
インストール: ツール - 拡張機能マネージャから追加する。(要 Py-UNO インストール)
利用:
Sub Main
Mri ThisComponent
End Sub
ライブラリを読み込むのが面倒であればツール - カスタマイズ - イベントのアプリケーションの開始
に MRILib モジュールの LoadMriLibrary を指定しておく。
ツールメニュー - アドオン - MRI からも実行できる。このときにはそのドキュメントのコンポーネントをターゲットになる。
同じく MRI <- selection の場合にはドキュメントで選択中のオブジェクトがターゲットになる。
OOo Basic 以外からの利用はマニュアル参照。
見た目は X-Ray と同じ系統。メソッドを引数付きで呼び出したり、プロパティ値の取得設定が可能。
IDL ガイドを設定しておくと参照可能。
特徴:
ノンモダル (OOo の awt ツールキットによるウィンドウ)
選択範囲のオブジェクトを調べるのにコードを書く必要がない
普段からマクロを書いたりしている場合には起動が楽
194 :
デフォルトの名無しさん:2008/05/26(月) 12:13:05
質問なのですが、
MS Officeのように、COM等を使用して
外部ブログラムから制御することは可能でしょうか。
自作ブログラムから制御して、Calcに表を作成して保存したいのですが。
>>195 さんくすです。
出来るんだね。
でもExcelとは互換性ないみたい。涙)・・・
Excelとの互換性は期待しない方が…。互換機能を追加したビルドも配布されてるけど期待しすぎるとガッカリする。
面倒でも OOo の文法を覚えるのが一番早い。その価値があるかは微妙だけどね。
なんで API の互換性まであると思っている人が多いのか・・・
VBAのコードをそのまま動かし(せ)ても、遅すぎて使い物にならない場合もあるしな。
結局 OOo 用に最適化しなきゃならないという。
201 :
デフォルトの名無しさん:2008/05/26(月) 22:42:57
LinuxやFuck OS、携帯電話のOSに、Windowsとの互換性を持たせろといっているようなものだ。
俺は、それらは別物であって移植の手間は必ずかかるということを認識しているから
マイクロソフト製Officeとその他Officeソフトに互換性がなくても問題とは思わない。
最近ODFDOMってのを良く見かけるんだが…
OOoから開いている文書をDOMレベルでいじれる可能性ってあるの?
ていうかそうなったらまたプログラムが膨れそうで嫌な気もするが…。
OOoもバージョン4は最初から作り直した方が良いと思う。
>>203 企業レベルで「5年で約1500万削減」って効果としてはあまり大きくないよなあ。
それに5年はともかく、10年後に OOo のファイルを開けるソフトが残ってるか結構微妙な気がする。
あー、企業じゃなくて市なのか。まあそれでもあんまり劇的ではないな。
>>205 >10年後に OOo のファイルを開けるソフト
OOo でも他のオフィス系ソフトでも
unzip + editor
お前ら嘘でもいいから「OOoは10年後も健在だ」とか言えんのか。
>>207 ファイル形式標準化されたからってそれを採用するソフトが現れるかどうか…。
>>208 レイアウト崩れるなら最初からテキストエディタでいいだろ。
210 :
デフォルトの名無しさん:2008/05/30(金) 00:15:44
オウプンオフィスで作成したファイルがオウプンできない
211 :
デフォルトの名無しさん:2008/05/30(金) 12:40:19
OOo Basicですでに開いている他のドキュメントのマクロを
別のドキュメントのマクロから呼び出すにはどうするのでしょうか
(VBAのApplication.Runに相当する命令)
>>209 スタイルも全てxmlなんだから、適当なビューワを誰か作るだろ。
>>211 >すでに開いている、というのはコードから開いてドキュメントオブジェクトがあるというわけではないわけかな
まず、デスクトップから FramesContainer にアクセスしてほしいドキュメントの所属するフレームを取得する
フレームからコントローラ、モデルオブジェクトまで辿る。
ドキュメントのモデルオブジェクトから ScriptProvider を取得、getScript で実行したいマクロを取得する。
最後に invoke する。
具体的なコード書かなくても分かるや
続き。
Sub Hoyoyo( sString As String )
msgbox sString
End Sub
Hoyoyo ドキュメント中の Standard ライブラリ、Module1 にある Hoyoyo subroutine を引数付きで実行する。
Sub invoke_Hoyoyo
sURL = "vnd.sun.star.script:Standard.Module1.Hoyoyo?language=Basic&location=document"
'フレームを見つけてくる
oFrames = StarDesktop.getFrames()
Dim oFrame As Object
For i = 0 To oFrames.getCount() -1 Step 1
If Left(oFrames.getByIndex(i).Title,6) = "Hoyoyo" Then
oFrame = oFrames.getByIndex(i)
End If
Next
If NOT IsNull( oFrame ) Then
oDoc = oFrame.getController().getModel()
oSP = oDoc.ScriptProvider
oScript = oSP.getScript(sURL)
If NOT IsNull( oScript ) Then
oScript.invoke( Array( "Say Hoyoyo." ), Array(), Array() )
End If
End If
End Sub
215 :
デフォルトの名無しさん:2008/05/30(金) 17:24:49
>>214 oDoc = oFrame.getController().getModel()
でドキュメントオブジェクトは取得できるのですが
oSP = oDoc.ScriptProvider の行で
「BASIC ランタイムエラー プロパティまたはメソッドが見つかりません」
と言うメッセージが出て終了します
もしかして1.1.5では実行できないのでしょうか
>>215 >1.1.5
その考えは無かったわ
dispatch でも動かん。すまん、わからん
Scripting Framework が導入されたのが 2 系からだから ScriptProvider は 1 系だと 1.9 後半くらいじゃないと動かん
217 :
デフォルトの名無しさん:2008/05/30(金) 19:26:27
>>217 SA5F(Geode800MHz)でさえ、OpenOffice2.4は(遅いけど)問題なく動きますよ。
よほどメモリ貧乏なのでなければ更新した方がいい気もしますが。
# 2.1が怪しいのは元々エラー処理が雑だったからで、2.4は割りと安定してます。
219 :
デフォルトの名無しさん:2008/06/03(火) 10:26:39
>>218 …300MHzです("スペックが低いためか"どころではないです)
本当に申し訳ありませんでした
222 :
デフォルトの名無しさん:2008/06/10(火) 20:28:46
update10以降、起動が早くなった気がしないでもない
>>219 是非、「OFFICEスイート」から「テキストエディタ」に乗り換えることをお勧めしますw
100 MHz の PC でテキストエディタ + TeX のころが懐かしい
懐古厨が使うようなソフトではないだろ。それに低速マシンなら Microsoft Office の 2000 辺りが無難。
チープなマシンで使うなら、ちょっと古い版のgnumericと、
コンソールで使うエディタとdbが良いような。
ms-officeは、便利な事もあるんだけど、
やっぱり、リソース食い過ぎと思うんだ。
実際、ほとんどの仕事は 一太郎 ver3 で十分なんだけどね。
もう売ってないし。持ってても動かないし。
そこで仮想PCですよ
めちゃめちゃリソース食うけどな
jsでマクロ書いてる人いないんだ?
OO.o使うついでにjsの勉強兼ねてマクロ作ろうと思ったけど、rhinoインスコしてもeditorでソース開けないわ。
ツール - マクロの管理 - JavaScript で新しくマクロのファイルを作成、編集ボタンを押す
OOo は rhino を自前で含んでる (programs/classes/js.jar)
OOo 2.3 までは rhino 1.5 release 4.1 2003 04 21、OOo 2.4 からは 1.5 release 5 2004 03 25
>>230 うほ。目から鱗。class pathにd/lしたrhino指定してソース開かず齷齪してたよ。
ありがとう。
232 :
デフォルトの名無しさん:2008/06/25(水) 18:47:51
開いた瞬間、全画面真っ黒になるマクロを作りたいのですが
どうせばいいですか。
マクロでまっくろじゃけえ、たいそうウケると信じております。
ナニで黒くするかね
-プレゼン
-ウィンドウ
ウイルスっぽい
これだとデスクトップマネージャの前に出られないか。
Sub BlackWindow()
oParent = StarDesktop.getActiveFrame().getContainerWindow()
oToolkit = oParent.getToolkit()
oDAcc = CreateUnoService( _
"com.sun.star.awt.DisplayAccess")
If oDAcc.hasElements() Then
oDisplay = oDAcc.getByIndex(0)
aSize = oDisplay.ScreenArea
nWindowTypeClass = com.sun.star.awt.WindowClass.TOP
oAttr = com.sun.star.awt.WindowAttribute
nAttr = oAttr.NODECORATION + oAttr.FULLSIZE
oWindow = CreateWindow( oToolkit, oToolkit.getDesktopWindow(), _
nWindowTypeClass, "window", nAttr, _
0, 0, aSize.Width, aSize.Height )
oWindow.setPosSize(0, 0, aSize.Width, aSize.Height, _
com.sun.star.awt.PosSize.POSSIZE )
oWindow.Background = 0
oWindow.setVisible(True)
End If
End Sub
続き
Function CreateWindow( oToolkit As Object, oParent As Object, _
nWindowTypeClass As Long, sTypeName As String, nAttr As Long, _
nX As Long, nY As Long, nWidth As Long, nHeight As Long ) As Object
aRect = CreateUnoStruct("com.sun.star.awt.Rectangle")
With aRect
.X = nX : .Y = nY
.Width = nWidth : .Height = nHeight
End With
aWinDesc = CreateUnoStruct("com.sun.star.awt.WindowDescriptor")
With aWinDesc
.Type = nWindowTypeClass
.WindowServiceName = sTypeName
.ParentIndex = -1
.Bounds = aRect
.Parent = oParent
.WindowAttributes = nAttr
End With
CreateWindow = oToolkit.createWindow(aWinDesc)
End Function
JSのOO.o用APiリファレンスってどこに載ってるか分かりますか。
Javaのはそれらしいのがあるんですけど、全部は載ってないし・・・。
ToolbarController を実装して Addons で OfficeToolbar に入れたのに初期化されないよ
Standard ツールバーに入れたら初期化されたから、Addons によるツールバーでは
Factory から作成されとらんのか。issue に・・・
日本語に翻訳するところから始めるんだ
autodoc は UTF-8 通るんかね?
243 :
デフォルトの名無しさん:2008/07/10(木) 17:54:23
OOo Basicで"VBScript.RegExp"を使うことは出来ないのでしょうか
>>243 こうか?
Sub retest
Dim Re As Object
Re = CreateObject("VBScript.RegExp")
Re.Pattern = "A."
Re.Ignorecase = True
Re.Global = True
sResult = Re.Replace("abc", "12")
msgbox sResult
Re = nothing
End Sub
245 :
デフォルトの名無しさん:2008/07/10(木) 19:42:21
>>244 そうなのですが、実行すると"Re.Pattern"の部分で
"BASICランタイムエラー 例外が発生しました Type:Unknown"
というメッセージが表示されて終了してしまうのです
>>211 の人の場合のようにバージョン(ちなみに2.0)が関係するのでしょうか
>>245 WinXPSP3で OOo 2.4.1、2.0.4 なら普通に動くが・・・
OS の問題かね?
247 :
デフォルトの名無しさん:2008/07/10(木) 22:26:36
>>246 OSはWin98SE(Ie6SP1)です
あきらめてbregexp.dllを使ってみようかと思いますが
"Declare Function"が使えるのはどのバージョンからでしょうか
Declare Function ReReplace Lib "bregexp.dll" Alias "Replace" _
(szRegstr As String, szTarget As String) As String
Sub ExampleDeclare
Dim sExp As String
Dim sTarget As String
Dim sStr As String
sTarget = "12"
sExp = "/\d/x/"
sStr = ReReplace(sExp, sTarget)
msgbox sStr
'FreeLibrary("bregexp.dll" )
End Sub
invalid target parameter って表示される・・・。
250 :
デフォルトの名無しさん:2008/07/11(金) 08:36:57
>>248 1.1.5使いの211です
>>249を実行すると
「BASIC ランタイムエラー 実装されていません」
となります
日本語独自ビルドであることは無関係なのでしょうか?
>>223 表計算ソフトが必要なのでエディタで代替出来ません
>>226 gnumericはインストールできませんでした
実装されていませんって・・・ダミーってことかね
・・・ com.sun.star.util.TextSearch サービスはカスだしなぁ
>>250 dll はフルパスで書かなきゃ駄目とか
253 :
デフォルトの名無しさん:2008/07/11(金) 22:52:06
>>252 早速試してみたところ実装はされたようですが
下記のマクロを実行したところ
「BASICのシンタックスエラー パラメータはプロシージャに合いません」
となります(Excelでは「345」と正常に表示されます)
Declare Function Match Lib "C:\WINDOWS\SYSTEM\bregexp.dll" _
(szRegstr As String, szTarget As String) As String
Sub Test
sTarget = "12.345"
ret = Match("m/(\d{3})/", sTarget)
MsgBox ret
End Sub
Sub Test
Dim sTarget As String
Dim sExp As String
sExp = "m/(\d{3})/"
sTarget = "12.345"
ret = Match(sExp, sTarget)
MsgBox ret
End Sub
こうすると、クラッシュするようになったよ・・・。
>>254 奇遇だな。俺も今それを試してクラッシュしたところだ。OOo beta 3 だけどな。
OOo 3 beta だった
>>249 を書いたのも俺だが、sTarget = "12" を "123" にするとクラッシュするんだ
OOo 1.1 からPy-UNOが利用できるから、Python 使うとか・・・
1.1.5 をDLしてくるか
ま、あきらめて自分で実装するのが一番早かったりしてな
なるほど、Alternative dialog Find & Replace for Writer 拡張機能の正規表現は
Basic で書かれてるんかな?コメがチェコ語?かなんかでパット見よー分からん
それならパクッテこれば・・・1系で動くか分からんが
ここはお前の日記帳か
それになんで TCP/IP が出てくるんだ
OOo はTCP/IPで接続できるが?別にpipeでもいいけど
通りすがりの者だが読んでるだけで勉強になるスレだと思った
264 :
デフォルトの名無しさん:2008/07/12(土) 09:21:29
243です
私もフルパス指定でやってみましたが"bregexp.dll"以外のdll
(unlha32.dll,urmon.dll,nmail.dll)ではいずれも関数を呼び出した行で
"実装されていません"となります(フルパス指定しない場合と同じ)
なので2.0では"Declare Function"が使えないのだと思っていました
kernel32 内のは動く (1.1.5、2.0)
ttp://www.oooforum.org/forum/viewtopic.phtml?t=72220&highlight=kernel32 Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _
(ByRef lpbuffer As String, nSize As Long) As Long
Public Function ComputerName() As String
Dim sBuffer As String
Dim lSize As Long
Dim sNome As String
sBuffer = Space$(260)
lSize = Len(sBuffer)
Call GetComputerName(sBuffer, lSize)
If lSize > 0 Then
sNome = Left$(sBuffer, lSize)
lSize = InStr(sNome, Chr$(0))
If lSize Then
sNome = Left$(sNome, lSize - 1)
End If
Else
sNome= ""
End If
'ComputerName = sNome
MsgBox sNome
End Function
bregexp のときの Declare 時の引数を ByRef だの ByVal をいじっても特に変わりなし
相性悪いんかね・・・
266 :
デフォルトの名無しさん:2008/07/12(土) 18:14:12
>>265も動きません
OS等OOo以外の環境が原因の可能性が濃厚ですね
そうなると他の方には解決策の探しようがありませんので
"Declare Function"の使用は断念します
お騒がせしました
(com.sun.star.util.TextSearchで2件目以降のマッチングさえ取得できれば・・・)
TextSearch はリファレンスにサブパターンが取得できるっぽいことが書かれてるのに
取得できないのが痛いよなぁ
二件目以降は文字列の endOffset 以降を再検索で・・・
268 :
デフォルトの名無しさん:2008/07/22(火) 06:11:06
com.sun.star.i18n.TransliterationでURLエンコード、デコードって出来るんでしょうか?
いいえ
270 :
デフォルトの名無しさん:2008/07/22(火) 20:10:42
そうですか、さんくすです。
Sub clipboard_2
oClip = CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
oTransfer = oClip.getContents()
aDataFlavors = oTransfer.getTransferDataFlavors()
bType = False
For i = 0 To UBound(aDataFlavors) Step 1
aDataFlavor = aDataFlavors(i)
If aDataFlavor.MimeType = "text/plain;charset=utf-16" Then
bType = True
Exit For
End If
Next
If bType Then
' convert utf-16 to UNO string
oConverter = CreateUnoService("com.sun.star.script.Converter")
sData = oConverter.convertToSimpleType( _
oTransfer.getTransferData(aDataFlavor), _
com.sun.star.uno.TypeClass.STRING)
End If
End Sub
上記の "If bType Then" 以降の処理を行わず "aDataFlavor" を
クリップボードに戻す事は可能でしょうか
>>271 クリップボードの内容を text/plain;charset=utf-16 だけにしたいってこと?
>>272 はい、なぜか文字数が多くなると "If bType Then" 以降の処理の結果
"sData"が空になってしまうので回避したいのです
>>273 64k 以上の文字列は扱えない・・・。というのが問題だとおもう
OOo Basic だと文字列は64kまで
>>275 OOo 2.4.1 winXP では Calc のウィンドウに対して問題なく動く
Sub test25
oDoc = ThisComponent
oFrame = oDoc.getCurrentController().getFrame()
oContainerWindow = oFrame.getContainerWindow()
oContainerWindow.setVisible(False)
bVisible = oContainerWindow.isVisible()
oContainerWindow.setVisible(True)
End Sub
どんなエラーが出るんかね?
>>276 BASIC ランタイムエラー
プロパティまたはメソッドが見つかりません
です
このスレッドを読むと1 系には実装されていないとかいうことでしょうか
設定は出来て取得できないなんて考えられないソフトです
メディアを演奏しようとすると
オブジェクト変数は設定できていません
とか言われるし
lockControllers() と addActionLock() を両方使っても
セルカーソルが移動するし
シート数40、サイズ9Mほど(Excel97の場合)のファイルを保存するのに5分!もかかるし
(StarCalc形式なら20秒弱ですむが文字が化けるし、Excel形式だと開くときにシート毎に
行の高さの調整とかを頼みもしないのに実行するのでとてもうっとうしい)
非表示で開いたCSVファイルを保存すると空になってしまうし・・・
Excelのマクロを移植するのは断念します
ありがとうございました
さようなら
OOo のマクロは利用者が少ないし、ドキュメントも整備されてないから、
開発にかなり忍耐を強いられるのは事実だな。多分不具合も多いと思う。
OOo3 系でも改善される気配がないし。
それに Excel は 2003 までだったらマクロとか動作速度に関しては良くできてるよ。
ただ、Excel 2007 で9M のファイルを開くとエラいことになりそうな気はするけど。
>>278 よく使う API には問題ない
Basic も大抵なんともないが、あまり使われてなさそうなランタイム関数を使うとバグであー、ってなる
ドキュメントが整備されるとは思えん・・・DevGuide 読めば分かると思われてるし
最近見てないけど、全機能の解説には程遠いんだよね、確か
んで、ひたすら Google での検索地獄になる
まぁ、ぐぐっても解決策が出てきた例がない
283 :
デフォルトの名無しさん:2008/09/07(日) 11:20:27
>>282 使えねーな、全く
会津若松市さん ご愁傷様
まあ英語ページで回答が見つかることもあるよ
彼らは一体どこで調べたんだろうと思うけども
本家で、難儀な質問に回答を出してるのは、
ソース触ってる中の人たちじゃまいか?
// ある意味、ソースがドキュメント状態?
大抵のことは散乱しているドキュメントなどで見つかるんだよ
ソースを見なきゃならんこともあったが・・・
とはいえ、ユーザーが最初の一歩を踏み出そうとするときにまとまったドキュメントが無いと躊躇すると思う
マクロを書くユーザーの多くは OOo のソースなんて見たくないと思うんだが
287 :
デフォルトの名無しさん:2008/09/08(月) 00:56:22
使えねーな、全く
普通は
>>277 のような書き込みは盛大に叩かれるのが一般的なのに、
ここでは誰も否定しないのが素晴らしい。みんなOOoには不満を抱えてるんだな
「○○がMS Officeを捨ててOOoを採用」とかいうニュースを見るたびに
担当 SE はご愁傷様、という気分になるよ
VBAでシステム組むのが馬鹿なんだよな。
そうでないなら、MSOfficeを大幅に減らしても殆ど問題がないのに。
>>289 あの便利さは一度覚えるとなかなか抜け出せないと思うよ
与えられた案件を顧客の要望に沿って実現するのがプログラマではないでしょうか
294 :
デフォルトの名無しさん:2008/09/08(月) 23:27:41
>>289 > VBAでシステム組むのが馬鹿なんだよな。
> そうでないなら、MSOfficeを大幅に減らしても殆ど問題がないのに。
AccessVBAとSQLで大抵の業務がすげーーー効率化、精度向上、リアルタイム化出来るんだけど。
ほとんど労力いらずで。Baseなんてので開発すりゃ、100倍の労力と1/100のサービスになりそう。
なんせ、情報が貧困過ぎる。
細かい指摘ですまんが、
× SQL
◎ RDBMS
○ MS SQL Server
じゃないだろうか。
リアルタイム化というのは定期的にバッチで処理していた業務を OLTP 化するという事?
>>295 「AccessとVBA」って書きたかった に100ペセタ
297 :
デフォルトの名無しさん:2008/09/09(火) 19:36:53
>>295 SQLは構造化クエリー言語だから、商品名ってわけじゃないと思うよ。
もち、Access内部のSQLを指す?
Baseはやはりどう考えても代替にはなり得ないと思うが
298 :
デフォルトの名無しさん:2008/09/09(火) 23:31:31
>>297 > Baseはやはりどう考えても代替にはなり得ないと思うが
みんな黙っちゃったじゃまいか
MS Office は捨てて OOo に移行しろ、みたいなことを言う人は基本的に信用しないことにしている。
本気で OOo に触ったことがある人ならそんなこと言えないと思うし。
MSOfficeはVBA触って初めてそのバカ高い値段設定にも納得がいく。
開発環境としてすごい整ってる。
だがOO.oの未来を切り開きたい俺はPythonUNOで何とか頑張りたい。
>>299 信用するかどうかは君の好きで決めていいんだよ。
わざわざ理由を考えてことわる必要なんて無いさ。
このスレで言うのもなんだけど、Access を使うなら SQLite とか HSQLDB とか
Apache Derby とか MySQL とかをお好みで使えば良いじゃんと思ってしまう。
303 :
デフォルトの名無しさん:2008/09/10(水) 14:53:08
>>297 > Baseはやはりどう考えても代替にはなり得ないと思うが
MSOfficeでも自動マクロ作成以外にマクロのコードを自分で組んでいる
ユーザはそう多くはないだろうということだろう。
OOoのマクロ言語がVBAの代替になるとまで言っている人を俺はいまだ見たことがないが。
問題点は指摘している人はオープンソース派サイドにも幾人かいるが。
純粋なロジックだけの話なら、ooo-basicはvbaの代替になると思う。
ぶっちゃけ、basicだから。
問題は、アプリとの絡みがある時に、リファレンスになる物が無いって事だろ。
calcのセル操作とかで分んない事があったら、キーマクロ吐き出させて、
呼出関数を探るんだけど、そのキーマクロが吐き出した関数の詳細が判らん。
例えばの話、セルの巾を変える関数が判ったら、
その近くにセルの高さを変える関数があるはずなんだけど、
そういう事が解るようなサマリーが無い。
その辺のドキュメントが整理されてくれば、使い易くなるんでないかなぁ。
305 :
デフォルトの名無しさん:2008/09/10(水) 18:34:36
>>303 > MSOfficeでも自動マクロ作成以外にマクロのコードを自分で組んでいる
> ユーザはそう多くはないだろうということだろう。
VBAは全員手書きだと思ってた
Accessが吐き出すVBAコードは、ある程度例外処理もなされているが
とてもじゃないが冗長すぎる。日本語入ってなくて分かりづらいし
後から手書きで直すのが苦痛ってか不可能。
普通、最初から手で書くか、コピペ手直し派がほとんどだと思うよ。
Accessが吐き出すSQLは割りと綺麗
後、とってもいじりやすい
日本語コードに拒否反応起こらないの?
307 :
デフォルトの名無しさん:2008/09/10(水) 22:17:22
>>306 オブジェクトの名称だろ
コードが日本語であるはずがない
ここの人は本当にVBA書いたことあるのだろうか?と疑いたくなる書き込みばかり
Accessが吐き出すVBAは全てアスキーコードに変換される
もちろん意味はある
しかし日本語で済めばそれに越したことはない
>>304 >キーマクロ吐き出させて
マクロの記録だとコマンド URL しか出んけど、その部分のソース見てるって事?
dispatch は最終手段・・・
OOoの場合は、マクロの自動生成で吐き出されるコードと、
打ち込みコードとの乖離がありすぎるのがいちばん難点。
その上、日本語のマニュアル書籍がほとんど皆無だから。
>>309 あれはひどい
あと、全APIのドキュメントがない以上、英語の状況も似たようなもんだと思うよ
英語ではチュートリアルがあるだけマシといえばマシだが
>>310 全API のドキュメントは登場しないと思う
今あるのは IDL ドキュメントだけど、IDL の無いサービスとかの IDL 追加を issue に出しても
内部用だから・・・とか言って拒否られる
Sub [test space]
[文字列] = "abc"
msgbox [文字列]
End Sub
313 :
デフォルトの名無しさん:2008/09/11(木) 22:37:56
使えねーな。ほんと
誰でもいいから、もっと使ってネガティブキャンペーンして、MSOfficeの値段を下げてくれよ。
>>300 Py-UNO だとマクロを拡張機能に入れて配布しにくくないか?
サービスにして com.sun.star.task.XJobExecutor インターフェースとか使わないと実行しにくい
OOoの普及率や完成度を考えたら、配布以前の問題だろ
316 :
314:2008/09/12(金) 13:26:52
>>300 すまん。2.4.1 の PythonScriptProvider に不具合があるみたいだ
Linux 上だと動作するが、拡張機能が毎回無効にされる
WinXP 上だと ScriptURIHelper がエラーを吐く・・・。
OOoでマクロならおとなしくBasicにしとくのが無難だと思うけどね。
一番需要があるから開発の今後に(少しは)期待できる気がする。
Javaですらどれだけ使われてるのか疑問。
319 :
デフォルトの名無しさん:2008/09/12(金) 22:41:05
>>317 > 一番需要があるから開発の今後に(少しは)期待できる気がする。
> Javaですらどれだけ使われてるのか疑問。
たぶん習得する時間と労力が全て無駄になる
>Basic は今後は安定化のみしかない
安定するならそれはそれで結構なことじゃないか
マクロ記録機能で吐き出されるBasicコードをなんとかしてくれ〜
グラフいじったときの振る舞いとかを知りたいのに、そういうのは全く吐かれないんだっけ?
グラフ絡みの挙動は、リファレンスで何とかならんかったっけ?
グラフに新しい系列を追加したりするのはリファじゃさっぱり・・・
>>326 それでやるとGUIからやるのとは違ったものになることが多くて
ひとまとめにされたり、変に分割されたりするんよ
ちょっと .chart2.data.DataProvider を試してみる
でも getUsedData から取得できるデータに x のデータが一系列分しかみられないのは・・・
いや、結局googleでWeb上に分散している答えを探すしか方法がないってことが問題なんでしょ。
あらかじめ答えの書かれた URL が分かってるならいいけど、
それを知らず、なおかつその答えがWeb上に存在するかどうかすら怪しいものを、
疑問点が湧くたびに調べなきゃならないってのは相当なストレスだよ。
俺は一時期VBAマクロの移植作業で苦労した経験があるが、
もう当面やりたいとは思わない。
いや、GUI から出来るのにそもそも API から不可だったりすることが大問題
調べても見つからないから、ソースを見たら外部から利用できる API がなかったりする
>>330 XY 散布図に多系列だと、大抵は x に対応する y が必要だからさ・・・
.chart2.data.DataSequence は x と y の対応に関する指定がないっぽいから望み薄だ
今試したら俺
>>326 の方法で XY 散布図のデータ系列の追加できたけどな。
もともと x, y1, y2 の2系列があるところを x, y1, y2, y3 の3系列にするってかんじに。
あとは色とかは線の太さとかは自分で設定すればいいし。
いや、散布図で一本目と別の x に対する y の値のグラフを同じグラフに描くような感じに
2.3 頃から使えるようになったやつ
なるほど、そんな機能があるとは知らなかった。
そんな新しい機能に対するAPIが用意されてるかどうかはすこぶる怪しいな。
ダメっぽいよ。未だGUIでも個別設定と纏めて設定を切り替えるととち狂うし。
散布図から他のグラフに変えて、元に戻してもおかしくなるし。
# 要は、x軸複数系列は完成してないと見るべし。
グラフのデータ系列の操作だがどうやら
oChart = ThisComponent.getSheets().getByIndex(0).getCharts().getByIndex(0).getEmbeddedObject()
oCooSys = oChart.getFirstDiagram().getCoordinateSystems()
付近から始めるみたいだ。
337 :
336:2008/09/20(土) 01:34:53
やっと、作成済みの散布図に新しい XY の系列の追加がうまくいったあぁ
>>337 おめ。
さぁ、後からツボった人が参照できるように、
書いたコードをどこかに晒す作業に戻るんだ。
// 公開の縛りとかが無くて、そゆ事が可能なコードならね:)
3.0 rc3 が出て、正式が 10/7 だと正式は rc3 になるんだろうけど
user/Script/python にいれた python マクロが認識されないままになりそうだ
OOo3.0をさっそく入れてみた。エクセル2003のマクロが動くかどうか試してみた。
シートオブジェクトを代入するところでつまずいた。orz
Dim ST_G As Excel.Worksheet, ST_D As Excel.Worksheet
Sub 図作成()
Set ST_G = Worksheets("Sheet1") ←ここでエラー
Set ST_D = Worksheets("Sheet2")
Dim ST_G As Excel.Worksheet
を As Object にすればいいんじゃない
343 :
341:2008/10/14(火) 16:12:36
>342
ありがとうございます!
ところが、別のところ(セルの塗りつぶし)でもエラーが出ました。移植に必要な情報ってどこかに
あるんですか?
ちゅうかさ、v.2 の頃に以前 VBA サポートを有効にしたビルドを使ったことあるけど、
あれにあんまり期待しない方がいいと思うぞ。ほとんどが動かなかったし。
※NetBeansスレでも聞いたのですが、こちらでもお願いします。
NetBeansでOpenOffice.Apiを使ったことのある方、教えてください。
やりたいこと 「OpenOffice.Calcからjavaのメソッドを呼び出す」
調べたら
NetBeansでOpenOffice.Apiを使えば簡単にスケルトンクラスを作ってくれることがわかりました。
早速、Apiをインストールしたのですが、以下の現象がでてます。
Apiをインストールすると
アドオン、calc アドイン、component、クライアントアプリ
の4つのプロジェクトが作成可能になります。
今回のやりたことは、componentプロジェクトでできそうです。
試してみると、アドオン・calc アドインは動作するのですが、componentプロジェクトがうまく作れません。
componentプロジェクトを作成すると、サービスの登録画面が表示され、インターフェース、サービスを追加しようとしたのですが、なぜか追加できません。
インタフェースを選択し新規データ型を定義ボタンから、追加しているのですが、うまくいきません。
解決策、またはやり方の間違えを指摘できる方、お願いします。
OS:WindowsXP pro
IDE:Netbeans 6.1
OO:OpenOffice 2.4.1
SDK:StarSuite_8_SDK
で試しています。
OpenOfficeSDKは現在DLできないようなので、StarSuite_8_SDKを使ってみました。
よろしくお願いします。
>>346 早速の返信ありがとうございます。
そのサイトを参考に進めていたのですが、Interfaceを追加するところから先に進まない状況です。
Logでも吐き出してくれれば調査できるのですが、そういうのも見当たらず・・。
もしかすると、IDEとOOのバージョン組み合わせに問題があるのかもしれません。
ほかにも何か、気になることがあればお願いします。
バイナリファイルからnull terminated stringを
読む方法はありますか?
OpenOffice.org 3.0/calc/OOo Basicです。
対象のファイルはバイナリファイル
(ゲーム提督の決断4のセーブデータ)であり
アドレス2192F(h)から
8b e3 98 5a 8e ae 8a cd 90 ed 00
と記録されています。(Shift-JISで「九六式艦戦」)
Dim Result as String
Get #1, Offset+1, Result
とすると「六式艦戦」から始まる長さ51807バイトの
文字列になってしまいます。
どうやら先頭2バイトを文字列長さと認識しており、
00を文字列終端と認識しません。
Input #1, Result
とすると「ヒ ̄リZホ?ハ?ミ?」という長さ10バイトの
文字化けした文字列になってしまいます。
null terminated stringをOOo Basicのstringとして
読み込む方法を教えてください。
350 :
348:2008/11/26(水) 14:29:26
リンク先が参考になりました。
ありがとうございます。
バイト型の配列で読みとれたら、後は文字列への変換ですね。
Shift-JIS→Unicode変換の方法がわかれば、
Chr関数はUnicode値→文字へ変換と組み合わせることで
解決できそうです。
こういう基本的なドキュメントってどっかにまとまってるべきだよなあ
352 :
:2008/11/26(水) 14:50:59
いや、ドキュメント作るにしたって元ネタがSunの出してる全然不足だらけのドキュメントと
掲示板に散在するTIPS集しかないじゃん。まさかソースからドキュメント起こせとでも?
やる気があるならまずは全然不足だらけのドキュメントと掲示板に散在するTIPS集の情報を一箇所にまとめてみれば?
やる気があるなんて誰も言ってないけど。俺は自力で探す方法でなんとかしのいでるし。
まあVBAのならともかく、Calc Basic のドキュメントなんて書籍化しても100部くらいしか売れないだろうな。
まあそうだろうね
やる気があるとは思っていないからあるならって仮定付きで言ったまでで
しかし書籍化なんて言葉が思い浮かぶだけでもびっくりだ
何をそんなにカリカリして食いついてくるのか理解不能だな
358 :
:2008/11/26(水) 15:30:17
「まとめるべきだよなぁ」なんて言ってるからじゃね?
頭から他力本願な癖に「〜すべきだ」なんて強要する態度が気に入らないと思われ。
何怒ってんだろう?OOo関係に文句いったらカチンとくるの?
いやOOo使ってないし
単にあがってるスレだったのが理由
さがってればスレの存在自体知らなかった
一般的な突っ込みの仕方をしただけなんで
OOoのドキュメント環境の知識はないよ
361 :
デフォルトの名無しさん:2008/11/26(水) 17:13:44
煽ってるつもりなんだろうか?
アホの考える事はわからんの〜
VBA系はマじゃないからわんさかいるな・・・
>>348 seek して TextInputStream を Shift_JIS エンコードに設定して
区切り文字に chr(0) 指定の readString で読むとか
8B E3 00 8B E3 98 5A 8E AE 8A CD 90 ED 00 8B E3
Sub readtysef
sURL = "file:///E:/usr/123"
oIN = CreateUnoService( _
"com.sun.star.ucb.SimpleFileAccess")._
openFileRead(sURL)
oTxtRead = CreateUnoService( _
"com.sun.star.io.TextInputStream" )
oTxtRead.setEncoding("Shift_JIS")
oTxtRead.setInputStream(oIn)
oTxtRead.skipBytes(3) ' from 8B
sRes = oTxtRead.readString(Array(chr(0)), True)
oIn.closeInput()
End Sub
マクロ編集のエディタが使い辛いのですが、エディタの機能を拡張したり、他のエディタと置き換えたり呼び出したりとか
そういうことはできませんか?
VBAで開発して、ある程度できたらOOoにコピペして調整。
366 :
デフォルトの名無しさん:2008/12/24(水) 11:19:22
Basice IDE 上でコピペしただけで、ダウンしてしまいます。。
何なんだろう。この使いがたさは。。
367 :
さいき:2009/01/16(金) 19:16:56
368 :
さいき:2009/01/19(月) 02:27:18
自己レスで=す。今日、日付フィールドの属性にあるドロップダウンというのをはいにすると
カレンダーコントロールのような入力画面になることを発見しました。
これはなかなか無料とは思えない便利な機能です!
情報ありがとう
そうか
372 :
デフォルトの名無しさん:2009/03/20(金) 21:26:07
>>201 オヤスミ…
<⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
そうか
スレ違い
補完機能が付くのはいつくらいなんでしょうか?・・・・
376 :
デフォルトの名無しさん:2009/05/20(水) 20:52:16
OpenOfficeのGUIからはエクスポート機能を使ってPDFや画像形式でファイルを保存できますが、
コマンドラインからは同様の機能はすぐに使えるんでしょうか?
ググってみたんですが、macroを使って変換するのは見つけたんですが、機能として持っているのなら
macro使わない方法もあるかと思って質問してみました。
あと、unoconvを使ってみたんですが、これはOpenOfficeをサーバとして起動して何かを渡して
いるようなので、そういうことができるならmacroなしのコマンドラインからという手段がありそうですよね?
writerで外字を使おうとしたら文字化けしてしまう。
StarSuiteでは外字使えないんでしょうか?
windowsはsp3、IMEを使ってます。
380 :
デフォルトの名無しさん:2009/06/23(火) 06:48:32
OpenOffice3.1.0を使用しています.
クイック起動はオフにしています.
DelphiからOpenOffice Calcを使ってxlsファイルを読み込む処理をしています.
http://www.clubdelphi.com/trucos/index.php?id=428 ここを参考に作成しました.
ClassID:=ProgIDToClassID('com.sun.star.ServiceManager');
h:=CoCreateInstance(ClassID, nil, CLSCTX_LOCAL_SERVER, IDispatch, id);
とした時点で、soffice.bin/soffice.exeという2個のプロセスが生成されます.
その後、読み込み処理を終了して、
ワークブックのクローズ、 objDocument.Close(True); を実行した時点で、
OpenOffice Caleは表示を終了し、画面からは消えます.
しかし、最終的に TWorkbook.Destroyを実行しても、
soffice.bin/soffice.exeという2個のプロセスが消えません.
CoCreateInstanceの後始末が必要なのかなと思って、
ServiceManager.Release; としたら、サポートしていないと例外が発生しました(objServiceManager := id;).
なにか、OpenOfficeを終了させるというコマンドを投げないといけないのでしょうか (ExcelのOleFunction("Quit");の様な)
ぐぐってみても、OpenOffice Basicで終了コマンドというようなものが見つかりませんでした.
soffice.bin/soffice.exeという2個のプロセスが残らないようにする方法を教えてください.
よろしくお願いします.
>>380 終了させるには com.sun.star.frame.Desktop サービスから
css.frame.XDesktop インターフェースの terminate メソッド
普通は最後のドキュメントを閉じれば終了するはずなんだけど・・・
382 :
380:2009/06/23(火) 20:02:01
>>381 ありがとうござます。
terminateでちゃんとsoffice.bin/soffice.exeが消えました。
access2003のファイルをBaseでは開くにはどういう操作をしたらいいのでしょう?
ExcelファイルをCalcで開くみたいには簡単にいきません。
どなたか教えてください。
ここプログラミング掲示板のOpenOffice.orgマクロ言語に関するスレッドなので、
ビジネスソフト掲示板あたりのOpenOffice.orgに関する総合スレッドで質問なさったほうが
返答を得やすいと思います。
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その2
『お前が規制系キャップ取れるか審査してやるよ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★
> 36 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:31:30.02 ID:PVAf+dux0
>
>>33 > キャップとコテハンの違いは何?
> 46 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:38:05.34 ID:PVAf+dux0
>
>>45 > その回答では落ちるなw
> 答えは教えないがw
> 50 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:41:29.96 ID:PVAf+dux0
> Q.キャップとコテハンの違いは何?
> A.2ちゃんねるのボランティアの登録制度
> それがお前の答えかw
> 52 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:43:10.06 ID:PVAf+dux0
> まぁ、どうせ正解が出るわけもないし、次の問題。
> 君が思う面白いスレはどんなの?
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/ にて自動焼人 ★までご連絡ください
387 :
デフォルトの名無しさん:2009/09/03(木) 10:46:46
BASIC繁栄時代があったらしい
現在のcライクインタープリタなbasicと、
前世紀に栄えていたbasicとは、実は別言語である
という説を唱えてみる
389 :
デフォルトの名無しさん:2009/09/16(水) 23:26:07
390 :
デフォルトの名無しさん:2009/09/26(土) 21:17:35
391 :
デフォルトの名無しさん:2009/10/10(土) 16:05:40
OpenOfficeマクロプログラミング
宍戸輝光 工学社 09/10 \1,890
出たね。
392 :
デフォルトの名無しさん:2009/10/18(日) 14:03:53
昨日からbaseいじっております。以前も(2.0)触ってみましたが、挫折しました。
M社の2003サポート切れの心配やバージョン毎の購入にウンザリしており、今回は挫折したくありません。
オフィスソフト自体は自宅で必要ではないのに会社の為に自分も購入している方も多いと思います。
一企業が一企業のソフトに業務を依存しなくてはならない現状が非常に間違った方向だとも思いますし、、。
現在basicの書き場所がBASEでわからなく、、、探していて辿りつきました。
道は遠いですか?
残念ながらここは過疎っているので、ビジネスsoft板やソフトウェア板などの
OpenOffice一般を扱うスレッドでマクロの質問等もなさると反応がいいと思います。
マクロを中心に扱った日本語書籍がやっと世に出た段階なのでこれからですね。
オプソは好きだが、M$オフィスの方がまだまだずっと出来がいい
396 :
デフォルトの名無しさん:2009/11/22(日) 20:36:49
プログラミング環境としては悪くないね、OOo
「初心者向けの」プログラミング環境ってことなら、ドキュメントがろくに揃ってないことで却下だなあ。
無料ってことをウリにするなら、Visual Studio の Express Edition には適わないし
.NET限定だけど、売りもののProfessional Editionへのステップアップも容易
「プログラミング環境」って?
コード補完や文法ミスの指摘をしてくれるIDEがあるってこと?
へぇ、知らんかった。ずいぶん進化したもんだね。
399 :
デフォルトの名無しさん:2009/12/05(土) 08:08:59
>>394 本屋でパラッと見たけどSDK関連の記載がなかったみたい。
つまり、これを参考にしても何も作れない。
SDK関連の記載って例えばどういうの?
401 :
デフォルトの名無しさん:2009/12/09(水) 22:35:32
>>401 なんかリンクが貼ってあるばかりでイマイチつかみどころのない説明ばかりだな
404 :
デフォルトの名無しさん:2009/12/09(水) 23:12:58
>>394 初心者がOooのBasicを始めるきっかけにするには良い本と思う。
ネットの情報は辞書的なページが多いので、簡単なチュートリアルがあるので助かった。
ダイアログの作り方とか。
ただ内容的にCalcに偏ってるし、標準関数とか全部記載していないので、
本に書いてあること以上のことをしようとするとネットに頼らざるを得ない。
どの言語の本でもそうだけど1冊だけで全て網羅するのは無理。
漏れ的には買って損はなかったよ。
本なんだからそれでいいんじゃないの
>>407 pythonならdteよりwebの方に良い情報がころがってるんじゃまいか?
OOo Basic で配列操作とか自前でやるの疲れるよな
PythonよりBasicの本の方が売れるでしょ
規制されてなかったらなんかマクロ書くわ
412 :
デフォルトの名無しさん:2010/01/14(木) 22:19:57
次スレは「OpenOffice.org マクロ」とでもして、言語を問わずに。
まだ半分以上スレ残りあるんだが
まさか新スレ立てるなよ
次すれになるようにマクロ書くか
Sub RepositioningBookmaks
oDoc = ThisComponent
oText = oDoc.getText()
oBookmarks = oDoc.getBookmarks()
For i = 0 to oBookmarks.getCount() - 1 step 1
oMark = oBookmarks.getByIndex(i)
oAnchor = oMark.getAnchor()
If Len(oAnchor.getString()) > 1 Then
sName = oMark.getName()
oStartRange = oAnchor.getStart()
oNewMark = oDoc.createInstance("com.sun.star.text.Bookmark")
oNewMark.setName(sName)
oText.removeTextContent(oMark)
oText.insertTextContent(oStartRange, oNewMark, False)
End If
Next
End Sub
ユーザー定義のツールバー探すもの
Sub find_toolbar
sUIName = "Test1"
oFound = nothing
oLM = ThisComponent.getCurrentController().getFrame().LayoutManager
oElements = oLM.getElements()
For i = 0 To UBound(oElements) step 1
oItem = oElements(i)
If Mid(oItem.ResourceURL, 1, 40) = "private:resource/toolbar/custom_toolbar_" Then
If oItem.getSettings(False).UIName = sUIName Then
oFound = oItem
Exit For
End If
End If
Next
If NOT IsNull(oFound) Then
' do something
msgbox "found"
End If
End Sub
文字列検索ができません。
*や%は使えるんですか?
InStr じゃ無理だな
ありがとうございます。
解決しました。
420 :
デフォルトの名無しさん:2010/01/19(火) 20:41:01
>>415l-416 乙。どんどん頼みます。勉強になります。感謝します。
規制が解除されたからまた埋めようかと思ったけど書くことが思いつかん
Writerで文字の段落と挿入された画像のURLをテキストデータとして
出力する場合に文字の段落はプログラミングガイドにあるように
supportsService("com.sun.star.text.Paragraph")
で判断できるのですが、挿入された画像は
supportsService("com.sun.star.text.TextGraphicObject")
では判断できないのですが、使用法が違うのでしょうか?
それともcom.sun.star.graphicかcom.sun.star.drawingを使うのでしょうか?
あとハイパーリンクへのアクセスの仕方も良く分からない(T_T)
ヒント等があればお願いします。
段落から Contents Enumeration すると画像に相当するもんが見つからないから・・・
画像が埋め込みじゃなければ GraphicURL プロパティ
>>423 どうもです。
画像は埋め込みでないので画像のURLの情報を得ようとすると
Doc = ThisComponent
OG = Doc.getGraphicObjects
msgbox OG(0).GraphicURL
で画像のURLの情報にアクセすることは分かるのですが、
Writerに記載した順序でテキストデータに出力する場合は、
EnumerationのWhileループではできなさそうですね(^^;
APIのWikiは英語だしよく分からない(T_T
ググるとカーソル位置に画像を挿入するサンプルコードは見つかるんですけどねぇ
css.text.XTextRangeCompare インターフェース使って画像の Anchor と段落の位置関係は分かるけどな
>>425 >css.text.XTextRangeCompare
どうもです。調べてみます。
OpenOfficd.org3,2 起動時間がすごく短縮されている。
これは有り難い。
OracleによるSun買収でどうなるか心配していたけど、
今回は、まじめにやってくれたみたいね。
428 :
ビギナー:2010/02/17(水) 10:35:48
こんにちは、プログラミング未経験のものです。
株式投資で一銘柄の過去の株価データを使って色々な条件で
売買したらどのような結果になるかのプログラムをつくりたく、
ooo basic でもこのようなことができますでしょうか?
具体的には、一銘柄について
日付、株価(始値、高値、安値、終値)をデータとし
何年何日に何円で株を何単位買い、買値より10円高い売り注文
株価が10円下がるごとに買い増し、買値より10円高い売り注文
と、詳細は更に検討しています。
それで結果、どのような売買記録でどのぐらいの収益になるか
の様なものです。
こんなこともできますでしょうか?
データについては、オープンオフィスのCALCにインプット
済みです。
些細なことでも何でも構いませんので、アドバイスよろしく
お願いいたします。
>>428 >>1の参考になる主なリンクの情報だけでやりたい事を実現できます。
アドバイスをねだる前に過去ログを読んでください。
430 :
ビギナー:2010/02/17(水) 15:38:25
>>429 すいません、了解しました。
ありがとうございます。
431 :
ビギナー:2010/02/18(木) 12:44:35
オープンオフィスのCALCに以下の様なデータがあるとします。
1、指定した日で指定した株価で1000株買います。
(売買は全部1000株なので考慮必要なしとします)
買い注文は5円下がるごとに出している。
(何かの売りが成立するまで)
2、これを買った翌日以降の注文で売り注文(買値+5円)をだす。
買ったものは全て翌日以降買い値+5円で売り注文を出す。
売ったら売値−5円でまた買い注文を出す。買い注文は5円下がる
ごとに出している。
この場合の取引結果を出すマクロはどのようになりますでしょうか。
日付 始値 高値 安値 終値
20010105 221 224 219 220
20010106 218 223 215 222
20010107 224 231 223 223
20010108 220 221 216 217
20010109 215 216 210 213
例、20010105に220円で買いとします。
()は参考です。
結果 20010105 220円買い成立(20010106以降225円売り注文)
20010106 215円買い成立(20010107以降220円売り注文)
20010107 224円売り成立(買値215円分)
225円売り成立(買値220円分)
(一番高い売値225円から5円安い220円で翌日以降買い注文、5円下
がるごとに買い注文もだしている)
20010108 220円買い成立(翌日以降225円売り注文)
20010109 215円買い成立(翌日以降225円売り注文)
210円買い成立(翌日以降225円売り注文)
multi
433 :
@yuo:2010/02/28(日) 15:18:35
初心者です。
マクロでcalcファイルを開くのにはどうしたらいいですか?
以下にふぁいるがあります。
C:\My Documents\学習\test.ods
Sub hoge
sURL = ConvertToURL("C:\My Documents\学習\test.ods")
oDoc = StarDesktop.loadComponentFromURL(sURL, "_blank", 0, Array())
End Sub
435 :
@yuo:2010/02/28(日) 18:47:26
>>434 プログラミング未経験で、色々調べてやっていたのですが
最初からつまずいてしまっていました。
どうもありがとうございます。
436 :
mu-mu:2010/03/11(木) 05:22:57
calcについて質問です。
マクロから日付を入力したいのですがどうすればよいのか分かりません。
Cell.String = "2010/03/11"
とすると表示は「2010/03/11」ですが、数式入力ボックスでは「'2010/03/11」
になってしまい日付として認識してくれません。
教えてえろい人orz
Cell.formula = "2010/3/11"
Cell.numberformat = 36
>>436 Cell.Value = DateSerial (2010, 3, 1)
DateSerial関数のパラメータは年、月、日の順。
そのままだと謎い数字が出てくるだけなので、
セルの書式を、日付のものに変更して。
>>436 日付のデータって、見た目は YYYY/MM/DD だけど、格納されてるのは
OpenOffice.org が対応してる年月時間を順列にした整数なの。
0〜9999999999999999999999 みたいな数で 1100年1月1日から2100年の12月31日までを管理するって感じ。
=CONCATENATE(A1:B2)
という風に範囲指定で文字列を連結したいのですが、できますか?
マクロ関数定義するならこんな感じかな
Function ConcatRange(oData) As String
Dim sRet As String
For i = 1 to UBound(oData, 1) step 1
For j = 1 to UBound(oData, 2) step 1
sRet = sRet & CStr(oData(i, j))
Next
next
ConcatRange = sRet
end Function
OOoBasicではVBAのようにクラスモジュールは作れないんでしょうか?
445 :
デフォルトの名無しさん:2010/05/24(月) 21:47:31
yes, you can
>>445 すいませんどうやればいいんでしょうか?
ヘルプ見てもググッても見つからないのですが・・・
クラスモジュールにしたいコードの先頭に
option vbaSupport 1
option compatible
option classModule
をつければクラスモジュールとして使えます
ただこの3つの違いがわかりません
誰か知ってる人いませんか
コードを見ると VBASupport 1 にすると Compatible も自動的にオンになる
最近のバージョンなら区別しなくていいみたい
外部データへのリンクだと文字化けするので、ソースから読み込みしてシートに書き込みたいのだけど
正規表現で株主優待情報だけ抽出するには、この先どうしたらいいですか?
Sub FileAccess
Dim oFileAccess As Object
Dim sURL As String
Dim oInputStream As Object
Dim vData As Variant
Dim sLine As String, sDataLine As String
sURL = "
http://biz.yahoo.co.jp/stockholder/search?detail=1766"
oFileAccess = createUnoService("com.sun.star.ucb.SimpleFileAccess")
oInputStream = CreateUnoService("com.sun.star.io.TextInputStream")
oInputStream.setEncoding( "EUC-JP" )
If oFileAccess.exists(sUrl) Then
vData = oFileAccess.openFileRead(sUrl)
oInputStream.setInputStream(vData)
While NOT oInputStream.isEOF()
sLine = oInputStream.readLine()
sDataLine = sDataLine & sLine & Chr(10)
WEnd
oInputStream.closeInput()
End if
txt(sDataLine)
End Sub
ヘッダーに画像をセットしたのですが、リンクされてしまいます。
このように書きました。
StyleFamilies = objDocument.StyleFamilies
PageStyles = StyleFamilies.getByName("PageStyles")
DefPage = PageStyles.getByName("Default")
DefPage.HeaderOn = True
DefPage.HeaderBackGraphicURL =D:\xxxx.bmp ’画像ファイルのパス
メニューで言うと次の場所になります。
書式→ページ→ヘッダー→詳細
ファイル---表示ボタンを押下しファイルを選択。
ここのリンクのチェックを外したいのですが、やり方がわかりません。
ご存知の方、教えてください!
>>453 リンクせずに設定して調べてみると、HeaderBackGraphicURL は空文字列で
該当するテキストオブジェクトの段落の背景に埋め込まれた画像の URL が指定されている
456 :
デフォルトの名無しさん:2010/12/21(火) 21:40:17
calcで
これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような
そんな言語使ってる奴ってどうみてもゴミだと思うんだけど
もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの?
そうか、二度と話かけんなよ
死ねよゴミ
宇宙にはデリミタ派とターミネータ派がいて
10億年も戦争を続けており終わる気配すら無い
459 :
デフォルトの名無しさん:2012/01/14(土) 13:22:56.51
マクロからフォームのテキストボックスの値を取得して変数に代入したいのですが
その方法が分かりません。
ご存知の方いませんか?
460 :
デフォルトの名無しさん:2012/01/26(木) 10:53:37.58
これだと数式として認識せずうまくいきません。
oSheet1.getCellRangeByName("A" & MyRow1).String ="=VLOOKUP(B" & MyRow1 &";'file:///C:/Users/"& myFileDate & "".csv'#$Sheet1.C1:O65536;7;0)"
どうしたらいいのでしょうか?
自己解決
.Stringを.Formulaにしたら、できました^^
↓のような構造体をVBAサポートモードで動かそうとしているのですが
シンタックスエラー(シンボルが必要)が表示されます。
具体的な解決策をご存知の方いましたら教えてください。
Private Type abc
abc As String
def As Long
ghi As Single
jkl As Double
End Type
Writerをマクロで紙の縦横の変更ってできないのでしょうか?
ThisComponent.getStyleFamilies().getByName("PageStyles").getByName("Standard").IsLandscape
の値が変更できません・・・・
プリンターパラメーターの変更のほうでも余白やもろもろ変えられても、縦横だけは無理っぽいです・・・
Dim oPrintOptions(0) as new com.sun.star.beans.PropertyValue
oPrintOptions(0).Name = "A4"
oPrintOptions(0).value = com.sun.star.view.PaperOrientation.LANDSCAPE
ThisComponent.setPrinter( oPrintOptions )
つかっているのはOpenOffice3.4.0です
すいません、すっごい初心な質問なんですが
総てのシートの総てのセルを対象に
特定の文字列が入っているセルだけを背景色を変える
ってマクロはどう書くんでしょうか?
初心者です
Calcのシート上で実行している計算をそのままBasicで実行したいと考えています
いろいろ出来ないのですが単純な"OFFSET"ですら動かせていません
(最終的には"INDIRECT"を動かしたい...)
次のサブルーチンをそのまま動かすとセルA1の値が返されるのですが
aArgs(1),aArgs(2)に0以外の値(例えば1)を設定すると値(例えばB1の値)が
返ってきません。なにがいけないのでしょうか?
Sub test
oFunctionAccess = CreateUnoService( _
"com.sun.star.sheet.FunctionAccess" )
oDoc = ThisComponent
oSheets = oDoc.getSheets()
oSheet = oSheets.getByIndex(0)
Dim aArgs(2) As Variant
' OFFSET(A1;0;0)
sFunction = "OFFSET"
oCell = oSheet.getCellRangeByName( "A1" )
aArgs(0) = oCell
aArgs(1) = 0 ' <- 0を1に変えると""が返される
aArgs(2) = 0 ' <- 0を1に変えると""が返される
aResult = oFunctionAccess.callFunction( sFunction, aArgs() )
MsgBox aResult(0)(0)
End Sub
>>466 オフセット指定が aArgs(0) のセル範囲外だといけないらしい
上記の場合、A1 の値しか取得できない
468 :
466:2013/05/10(金) 22:09:18.60
>>467 即答ありがとうございます。無事実行できました
単純移植はできないんですね
(考えると"INDIRECT"のパラメータの渡し方は自分には想像できない...)
セルに値を入れてCalcに計算してもらうかCallFunction使わない関数で
作ることにします
ありがとうございました
ユーザー関数を置いた自分のセルの番地を表示するマクロを作りたいです。
関数で表すと =CONCATENATE(ROW(),",",COLUMN())と結果は同じことなのですが
これをユーザー関数のマクロのみで求めることはできますか?
ここ、需要有るの?
あるわけねえだろ
ハンカチ仮面って時代を感じる
calcで定期的に再計算させる処理ってループでsleep使いながら
どこかのセル更新するしかないのかな
タイマっぽい時間管理のシート作ってるけど
CTRL+SHIFT+F9押すのめんどいしシート開いてるだけで更新させたい
sub main
do while true
wait 5000
ThisComponent.calculateAll
loop
end sub
>>473 助かりました!
d(゚Д゚)☆スペシャルサンクス☆( ゚Д゚)b