StarBasicまたはOOo Basicプログラミングに興味のある方、
もしくは学習中の方、知識共有の場にしましょう。
参考になる主なリンク
StarSuite 8 Basic プログラミングガイド
http://docs.sun.com/app/docs/doc/819-1332?l=ja
OpenOffice.org 推進サイト
http://ooosupport.good-day.net/ja/documents/faq/
OpenOffice.org日本ユーザー会翻訳プロジェクト BASIC HELP
http://openoffice-docj.sourceforge.jp/tr/translated/basic_help_frame.html
OpenOffice.org本家 API Project
http://api.openoffice.org/
ウィキブックス OpenOffice.org Basic
http://ja.wikibooks.org/wiki/OpenOffice.org_Basic
ウィキブックス OpenOffice.org Calc Basic
http://ja.wikibooks.org/wiki/OpenOffice.org_Calc_Basic
pukiwiki Plus!
http://hermione.s41.xrea.com/pukiwiki
他に追加情報があったら教えてください。
探検
【StarSuite Basic/OpenOffice.org Basic】
■ このスレッドは過去ログ倉庫に格納されています
2006/10/06(金) 20:04:48
2nat
2006/10/06(金) 20:10:10 2get
2006/10/08(日) 19:00:32
リンク付け足し。ここは参考になります。
Developers Guide
http://openoffice-docj.sourceforge.jp/tr/translated/developerguide.html
Developers Guide
http://openoffice-docj.sourceforge.jp/tr/translated/developerguide.html
2006/10/09(月) 23:49:11
2006/10/10(火) 00:03:12
developerguide がwebで読めるのか。これは助かるな。
ZIPアーカイブされたのをローカルに保存しておく手間が省ける。
ZIPアーカイブされたのをローカルに保存しておく手間が省ける。
2006/10/10(火) 19:38:11
初歩的な質問でごめんなさい。
ExcelのVBAでは
Worksheets("シート名").Activate
と書くところを、OOo Basicの場合ではどう書けばいいんでしょうか?
ExcelのVBAでは
Worksheets("シート名").Activate
と書くところを、OOo Basicの場合ではどう書けばいいんでしょうか?
7ハンカチ仮面
2006/10/10(火) 20:24:012006/10/17(火) 10:27:59
OpenOffice.org Calcをデータベースサーバーのクライアントソフトに
しようと思うんですが、どなたか一緒に情報探してくれる人いませんか。
しようと思うんですが、どなたか一緒に情報探してくれる人いませんか。
2006/10/18(水) 09:31:21
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 ***
ムを作成して おります。勉強もかねて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
//-----------------
#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側に返礼させることができるのでしょうか?
Declare Function MyMessageBox Lib "test.dll" Alias "MyMessageBox" (str As String) As String
のように返礼値がString型であることを明示したので未知数が返ることが
なくなりました。このとき同様に「あ」という文字をdll側に渡すと「・」という
文字がbasic側のmessageboxで表示されます。「a」という文字をdll側に渡す
と「a」という文字がbasic側で表示されます。
どのようにしたら日本語を正しくbasic側に返礼させることができるのでしょうか?
2006/10/19(木) 14:02:49
MinGW環境ないんでBCC5.5で試してみた。
UTF-8Nを要求される状況でShift JISを返すから化けるような気がする。
その割に引数の文字列がDLL側で正しく表示されるのがよく分からんが。
MinGWならDLL側でiconv()とか使ってUTF-8Nエンコして返すのが一番早いんじゃないかね。
UTF-8Nを要求される状況でShift JISを返すから化けるような気がする。
その割に引数の文字列がDLL側で正しく表示されるのがよく分からんが。
MinGWならDLL側でiconv()とか使ってUTF-8Nエンコして返すのが一番早いんじゃないかね。
2006/10/19(木) 15:36:14
iconv.h拾ってきて試してみたが、やはりOOo側が認識してないような雰囲気が。
少なくともDLLに正しく文字列は渡ってるんだから、結果としてURIエンコードされるなら
iconv()なくても別に問題ない気がしてきた。
少なくともDLLに正しく文字列は渡ってるんだから、結果としてURIエンコードされるなら
iconv()なくても別に問題ない気がしてきた。
15なしたか
2006/10/19(木) 20:15:2916なしたか
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;
}
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オブジェクトを取得する方法は
ありますでしょうか?
つづけざまに質問なのですが、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オブジェクトを取得する方法は
ありますでしょうか?
2006/10/20(金) 16:29:58
for each nextは他のループに置き換える。
WSHの配列オブジェクト・コレクションはCountで個数、Itemで要素を取得できる。
こっちはOOoとは関係ないのでWSHスレ等で聞くべきだ。
WSHの配列オブジェクト・コレクションはCountで個数、Itemで要素を取得できる。
こっちはOOoとは関係ないのでWSHスレ等で聞くべきだ。
19デフォルトの名無しさん
2006/11/24(金) 13:36:41 OpenOffice.org CalcがExcel VBAをサポート
ttp://opentechpress.jp/developer/06/11/22/0059225.shtml
ttp://opentechpress.jp/developer/06/11/22/0059225.shtml
2006/11/25(土) 01:23:26
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のファイルを開いてみたんだけど、なにも起こらないし、
コードも見えない。
>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のファイルを開いてみたんだけど、なにも起こらないし、
コードも見えない。
2006/12/02(土) 10:21:30
>>21
Debian使いなら自力で使えるようにしていただきたいですな
Debian使いなら自力で使えるようにしていただきたいですな
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 特攻機と同じ名称「桜花中」、福岡・大牟田市の新設中学校名に異論 市民団体が再考申し入れ [少考さん★]
- 町山智浩「日本のパンダ経済効果は308億円」…「…いらない」と言ってる人達は、パンダで暮らす人々の損害補填してくれるのか…と問う [少考さん★]
- サウナ火災で夫婦死亡 非常ボタンが“電源切れ”★2 [夜のけいちゃん★]
- 中国からの留学中止相次ぐ 中国外務省「日本の治安が悪化」 [♪♪♪★]
- 町山智浩「日本のパンダ経済効果は308億円」…「…いらない」と言ってる人達は、パンダで暮らす人々の損害補填してくれるのか…と問う★2 [少考さん★]
- 個人金融資産、2286兆円 9月末、過去最高更新―日銀 [少考さん★]
- 【ボッタ】ついに「おみくじ」までが大幅値上げ!いっきに倍の200円に。。高市ミクスは続く [219241683]
- スマホ触る瞬間に画面切り替わって変なボタン押すミスあるじゃん?
- 本日打ち上げ予定だったH3ロケット、緊急停止 [498389267]
- 【朗報】井川意高「日本がアジア解放をしたというのは嘘、日本が勝ってたらアジアを再植.民地化してただけ」 [931522839]
- 高市さん、中国のためにEV補助金を130万円に大幅に増額してしまう [709039863]
- 【🇮🇳】 インドさん。50%のトランプ関税をものともせず、対米輸出額 前年同月比22%増を達成 🎉 [485983549]
