OpenOffice,Basic,Mid()関数にて「無効なプロシージャの呼び出し」のエラー?
OpenOffice Basicの初心者です.
「指定ユーザ数の、指定文字数のランダム文字列(a-z,A-Z,0-9)を生成するプログラム」
を作成したのですが,
以下のスクリプトを実行すると,下から6行目にて
「アクションは支援されません。無効なプロシージャーの呼び出し。」
というエラーが,出力されます.
出力されるタイミングは定まっておらず,
プログラムが正常に動くときもあれば,
実行初期段階でエラーが出るときもあれば,
実行途中でエラーが出るときもあります.
色々と自分で原因究明してみましたが,原因が分かりません.
(どうも Mid()関数 のところでひっかかっているようなのですが・・・.)
どなたか、ご教授頂けませんでしょうか?
(※添付画像は,出力されるエラー画面です.)
----- 自作スクリプト ここから -----
Sub Main
dim doc as object
dim sheet as object
dim cell as object
dim i, j as integer ' for文制御用
dim m, n as integer ' m:何人分か, n:何文字分か
dim rand, maxRand as integer
dim pw as string '文字列格納用変数
' 初期化
rand = 0
maxRand = 63 ' 63未満の乱数生成する
m= 20 ' 何人分の文字列か
n = 15 ' 何文字分の文字列か
doc = thiscomponent
sheet = doc.sheets (0)
smallString = "abcdefghijklmnopqrstuvwxyz"
largeString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
numberString = "0123456789"
rootString = smallString + largeString + numberString
cell = sheet.getcellbyposition(0,0)
cell.string = "生成した文字列"
for i = 1 to m
pw = ""
for j = 1 to n
rand = int(maxRand * Rnd()) ' 乱数の生成
pw = pw + Mid(rootString, rand, 1)
next
cell = sheet.getCellByPosition(0,i)
cell.string = pw
next
End Sub
----- 自作スクリプト ここまで -----
OpenOffice,Basic,Mid()関数にて「無効なプロシージャの呼び出し」のエラー?
OpenOffice Basicの初心者です.
「指定ユーザ数の、指定文字数のランダム文字列(a-z,A-Z,0-9)を生成するプログラム」
を作成したのですが,
以下のスクリプトを実行すると,下から6行目にて
「アクションは支援されません。無効なプロシージャーの呼び出し。」
というエラーが,出力されます.
出力されるタイミングは定まっておらず,
プログラムが正常に動くときもあれば,
実行初期段階でエラーが出るときもあれば,
実行途中でエラーが出るときもあります.
色々と自分で原因究明してみましたが,原因が分かりません.
(どうも Mid()関数 のところでひっかかっているようなのですが・・・.)
どなたか、ご教授頂けませんでしょうか?
(※添付画像は,出力されるエラー画面です.)
----- 自作スクリプト ここから -----
Sub Main
dim doc as object
dim sheet as object
dim cell as object
dim i, j as integer ' for文制御用
dim m, n as integer ' m:何人分か, n:何文字分か
dim rand, maxRand as integer
dim pw as string '文字列格納用変数
' 初期化
rand = 0
maxRand = 63 ' 63未満の乱数生成する
m= 20 ' 何人分の文字列か
n = 15 ' 何文字分の文字列か
doc = thiscomponent
sheet = doc.sheets (0)
smallString = "abcdefghijklmnopqrstuvwxyz"
largeString = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
numberString = "0123456789"
rootString = smallString + largeString + numberString
cell = sheet.getcellbyposition(0,0)
cell.string = "生成した文字列"
for i = 1 to m
pw = ""
for j = 1 to n
rand = int(maxRand * Rnd()) ' 乱数の生成
pw = pw + Mid(rootString, rand, 1)
next
cell = sheet.getCellByPosition(0,i)
cell.string = pw
next
End Sub
----- 自作スクリプト ここまで -----
事情によりOpenOfficeの表計算ソフト上で簡単なマクロを作らなければならなくなったのですが、私は満足なプログラミングの知識をもっていず、また身近に頼れる詳しい人もいずに困り果ててしまいました。
マクロの内容は選択中の結合されたセルのサイズ(幅と高さ)にあわせて、はみ出さない範囲で拡大した画像を挿入するというものです。
ネットで検索するなどして調べたOOoBasicマクロの情報を元につぎはぎして、理解できないなりになんとか選択範囲のサイズを取得してあわせて拡大/縮小する所まではいきました。しかし、結合されたセルを選択している場合には、結合されたセルの中の一番左上の単一セルのサイズを取得してしまい、結合されたセル全体のサイズがどうしても取得できないという問題が残ってしまいました。
詳しく書くと、
Dim oSelection As Object
oSelection = ThisComponent.CurrentSelection
Dim w_len As Long
Dim h_len As Long
w_len = oSelection.size.Width
h_len = oSelection.size.Height
としたいうようになっていて、A1からC3まで結合されたセルを選択してマクロを実行するとA1の単一セルのサイズがw_lenとh_lenに入ってしまいます。
MicrosfOfficeに比べてOOoは情報が少なく、またあったとしても分かっている人向けに書いてあることが多く、関係がありそうなものを探しては闇雲にテストしてエラーを返され続けることに疲れました。
なにか良い方法があれば教えてください。よろしくお願いいたします。
事情によりOpenOfficeの表計算ソフト上で簡単なマクロを作らなければならなくなったのですが、私は満足なプログラミングの知識をもっていず、また身近に頼れる詳しい人もいずに困り果ててしまいました。
マクロの内容は選択中の結合されたセルのサイズ(幅と高さ)にあわせて、はみ出さない範囲で拡大した画像を挿入するというものです。
ネットで検索するなどして調べたOOoBasicマクロの情報を元につぎはぎして、理解できないなりになんとか選択範囲のサイズを取得してあわせて拡大/縮小する所まではいきました。しかし、結合されたセルを選択している場合には、結合されたセルの中の一番左上の単一セルのサイズを取得してしまい、結合されたセル全体のサイズがどうしても取得できないという問題が残ってしまいました。
詳しく書くと、
Dim oSelection As Object
oSelection = ThisComponent.CurrentSelection
Dim w_len As Long
Dim h_len As Long
w_len = oSelection.size.Width
h_len = oSelection.size.Height
としたいうようになっていて、A1からC3まで結合されたセルを選択してマクロを実行するとA1の単一セルのサイズがw_lenとh_lenに入ってしまいます。
MicrosfOfficeに比べてOOoは情報が少なく、またあったとしても分かっている人向けに書いてあることが多く、関係がありそうなものを探しては闇雲にテストしてエラーを返され続けることに疲れました。
なにか良い方法があれば教えてください。よろしくお願いいたします。