TOP メニュー

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
フォトアルバム

カテゴリー「一太郎マクロ初心者奮戦記」の20件の投稿

2007年5月12日 (土)

一太郎マクロ初心者奮戦記・・・一太郎マクロの基本は

 本日で一太郎マクロをやり始めて約2ヶ月になる(2006/12/04現在)。

悪児さんのレベルには到底比べるべくもないが初心者は

初心者なりに見えてきたことがあるのでそれを書き留めることにする。

 一太郎マクロをマスターするため覚えなければならないことは何か?

一太郎のヘルプであるマクロバイザーによると関数の数は

2253もあるという。それを全て知らなければ一太郎でマクロを

組むことは出来ないのか?そんなことは絶対にない。

今回、一太郎マクロを囓ってみて感じたことだが、

一太郎マクロで特に覚えなければならない関数の数は

それ程多くない。

一太郎マクロで大切な関数は

1.文字を書き込む関数:Insert()
2.文字を読み取る関数:GetCharacter()

 上の二つはいずれもカーソル位置に文字を書き込み、カーソル位置の文字を読み取るのであるから、あとはカーソルを移動させる関数・・・

3.右、左、上、下、ジャンプなど・・・

これぐらいの使い方がわかれば後はなんとかなるとおもう。

 ・・・というのは条件分岐のIF文やSelect文は別に

一太郎マクロに特有のものではないし、

繰り返しのFor文やDo~Loopも特に一太郎マクロに

特有のものではない。

 

 一太郎マクロで何かをやろうと思ったら、

基本はたったの3つしかない!!

くまぷーは敢えてここに断言する!!恐れることは何もない!!

一太郎マクロでは

Insert()とGetCharacter()
それにカーソル移動の
命令を覚えれば何とかなる!!

2007年5月11日 (金)

一太郎マクロ初心者奮戦記・・・カーソル位置の文字を取得するには(4)

GetString()を使ってWord Listの単語を読み込み、その単語の

文字数を隣の列に出力するプログラムを作る。下がWord Listのイメージだ。

Taro_macro0032_3
*

*

*

*

*

*

*

*

*

*

コードは下のようになる。

ジャンプ(.ページ番号=1,.行番号=5,.文字位置=44)
範囲選択開始(.単位=1)
範囲選択単位(.単位=7)
ジャンプ(.ページ番号=1,.行番号=24,.文字位置=109)

%Str = GetString()
%Num = Size(%Str)    !!Size関数は配列の個数を返す。

For %i = 1 to %Num
    %Length(%i) =Len(%Str(%i))
Next

ジャンプ(.ページ番号=1,.行番号=5,.文字位置=68)
For %i= 1 to %Num
    削除(.回数=2)
    Insert(%Length(%i))
    DownCell()
Next

上記のコードはサンプルファイルのなかに「文字取得2」という

名前のマクロとして登録されている。

WORD_FIND02.lzhをダウンロード

一太郎マクロ初心者奮戦記・・・カーソル位置の文字を取得するには(3)

  前回はGetCharacter()をカーソル位置の文字を取得した。

今回はGetString()を使って文字を取得する。まず始めに

GetString()をヘルプで調べてみよう。以下がヘルプの記載だ。

★GetString(取得方法) 
機能 指定した範囲の文字列が配列で返ります。
引数 取得方法 取得方法を数値で指定(省略:1)
     1 1行の文字列を配列要素にする(従来の動作)
2 罫線セル内の文字列も配列要素にする
説明 あらかじめ指定した範囲の文字列が1次元配列で返ります。取得方法が1の場合は、1行の文字列を1つの配列要素とします。取得方法が2の場合は、罫線セル内の文字列も1つの配列要素とします。返値の配列の添字は1から連続する正の整数です。

  では実際にGetString()を使ってみよう。下のように5人の名前が書いてあるとする。

Taro_macro0041

*

*

*

*

.*

*

         ここで5人の名前を選択して・・・

Taro_macro0051

*

*

*

*

*

*

*

%Str = GetString()

上記のコードを実行すると・・・なんと・・・
%Str(1) = "くまぷー"
%Str(2) = "悪児さん"
    %Str(3) = "ジョー3さん"
%Str(4) = "呑さん"
%Str(5) = "かずさん"

・・・と記述したのと同じ事になる。当然、下のように記述すると

%Str =GetString

MsgBox(%Str(3))

Taro_macro0061

2007年5月 8日 (火)

一太郎マクロ初心者奮戦記・・・カーソル位置の文字を取得するには(2)

今回はGetCharacter()を使ってリストの英単語を読み取り、

その長さを隣の列に出力するというプログラムをつくる。

下図がそのイメージだ。

Taro_macro0032

*

*

*

*

*

*

*

*

*

*

*

*

プログラムのコードは下のようになる。

ジャンプ(.ページ番号=1,.行番号=5,.文字位置=44)

For %y = 1 to 20
    %Str=""
    For %x = 1 to 12
        %S = GetCharacter()
        If %S= " " Or %S = " " Then
             Exit For
        End If
        右
        %Str = %Str & %S
    Next
    %MyWord(%y)=%Str
    %Length(%y) = Len(%Str)
    ジャンプ(.ページ番号=1,.行番号=(5+%y),.文字位置=44)
Next

ジャンプ(.ページ番号=1,.行番号=5,.文字位置=68)
For %i= 1 to 20
    削除(.回数=2)
    Insert(%Length(%i))
    DownCell()
Next

GetCharacter()は1文字ずつしか読み取れないために

上記のコードで12回ループして変数%Strに1単語分を

読み込む。マス目が12×12なので1単語は

最長12文字まででなければならない。

尚、補足だが「右」というのはカーソルをひとつ右に移動させる命令だ。

この命令をループのなかで使うことによりGetCharacter()で

一単語文の文字を読み取っていく。さらにDownCell()というのは

カーソルを1マス下に移動させる命令である。

上記のコードはサンプルファイルのなかに「文字取得」という名前の

マクロとして登録されている。

WORD_FIND02.lzhをダウンロード

一太郎マクロ初心者奮戦記・・・カーソル位置の文字を取得するには(1)

 前回までの研究でInsert()を使えば、カーソル位置に

文字を書き込むことができるということがわかった。

書き込みの次は当然、読み取りだ。いったい、

どうすれば文字を読み取ることができるのだろうか。

ヘルプを調べてみると使えそうなものが2つあった。

ひとつはGetCharacter(),もうひとつはGetString()だ。

まず始めにGetCharacter()から調べてみることにする。

以下がヘルプの記載だ。

★GetCharacter() 引数は無し。

機能 カーソル位置の文字が返ります。

返り値 カーソル位置の文字。改行マークなどの特殊記号は "" が返る。

GetCharacter()はカーソル位置の1文字しか読み取ることができない

従って、GetCharacter()を使って文字を読み込むにはカーソルを

移動させながら読むことになる。この辺りは

が役に立つことであろう。

2007年5月 6日 (日)

一太郎マクロ初心者奮戦記  範囲を選択するには・・・(2)

 さて前回のサンプルファイルのコードをよく見てもらえば

下のようになっているのがわかると思う。

実はすでにマス目の初期化コードは組み込まれていたのだ。

下記のコードの2行目から4行目(赤い部分)の

行頭の感嘆符「!!」を削除してもらえば

コメントアウトされていたコードが有効になる。

 一太郎マクロでは行頭に「!!」またはREMを

付加することによってコードを無効にすることができるのだ

Jump(1,4,2)
!!範囲選択開始(7)
!!Jump(1,15,73)
!!削除(1)



For %Y = 1 To 12
      For %X = 1 To 12
           Randomize(ThisTime())
           %num = Int(Rand() * 26) + 97
           Insert( Char(%num))
           if %X < 12 Then
              RightCell()
           End If
      Next
      DownCell
      LeftCell(11)

Next

★範囲選択の仕方
(1)Jump命令などによって範囲の始点にカーソルを移動させる。
(2)「範囲選択開始(単位)」命令を発行する。
  尚、単位は(省略は1)
  

1 文字
2
3 段落
4 ページ
5 ブロック
6 単語
7 セル
30 すべてを選択

(3)Jump命令などによって範囲の終点にカーソルを移動させる。

WORD_FIND01_1.lzhをダウンロード

2007年5月 5日 (土)

一太郎マクロ初心者奮戦記  範囲を選択するには・・・(1)

 さて前回までに書いた下のコードでは12×12のマス(以下、マス目)に

すでにアルファベットが書かれていた場合、そのアルファベットを

削除しておかないと予期したとおりの動作をしない。

これでは余りにも情けない。

 そこで今回は前回のコードにマス目を初期化するコードを

付け加えることにする。

記録マクロでマス目を選択してデリートボタンを

押してコードを作成すればいいだろう。

ジャンプ(.ページ番号=1,.行番号=4,.文字位置=2)
範囲選択開始(.単位=1)
範囲選択単位(.単位=7)
ジャンプ(.ページ番号=1,.行番号=15,.文字位置=71)
削除(.回数=1)

上が記録マクロで作成したコードだ。

他のソフトでも言えることだが記録マクロで

自動生成されたコードには冗長な部分が出てくる。

上で言えば2行目の「範囲選択開始(.単位=1)」と

3行目の「範囲選択単位(.単位=7)」だ。

「範囲選択開始」を単位=1、すなわち文字単位を指定して、

何もせずに「範囲選択単位」で単位を7に変更している。

これは無駄だ。

それならば始めから「範囲選択開始(.単位=7)」とすれば良いだろう。

つまり上のコードは下記のようになる。

ジャンプ(.ページ番号=1,.行番号=4,.文字位置=2)
範囲選択開始(.単位=7)
ジャンプ(.ページ番号=1,.行番号=15,.文字位置=71)
削除(.回数=1)

                                  (続く)

2007年4月23日 (月)

12×12のマスにランダムにアルファベットを表示する(3)

それでは具体的なコードを示そう。以下の通りだ。

Jump(1,4,2)

For %Y = 1 To 12
      For %X = 1 To 12
           Randomize(ThisTime())
           %num = Int(Rand() * 26) + 97
           Insert( Char(%num))
           if %X < 12 Then
              RightCell()
           End If
      Next
      DownCell
      LeftCell(11)

Next

サンプルファイルのマクロ「Main」を実行すると12×12のマスに

ランダムにアルファベットが表示される。

尚、繰り返して「Main」を実行するときはあらかじめ12×12の

マスに表示されているアルファベットを削除しておく。

サンプルファイルを用意したので

下からDLして欲しい。

WORD_FIND01_1.lzhをダウンロード

2007年4月22日 (日)

12×12のマスにランダムにアルファベットを表示する(2)

つぎにセルを指定する命令であるが、三四郎のCellsや

ワードVBAのCellに相当するものは無いようである。

使えそうなのは以下の3つの命令である。

LeftCell(回数):カーソルを指定された回数だけ左に移動させる。
RightCell(回数):カーソルを指定された回数だけ右に移動させる。
DownCell(回数):カーソルを指定された回数だけ下に移動させる。

文字コードを文字に変換する命令はすぐにわかった。

Char(文字コード)だった。

文字コードはA~Zが65~90、a~zが97~122だ。Char(65)はAのことだ。

12×12のマスにランダムにアルファベットを表示する(1)

 さて今まで調べたことを基に12×12のマスにランダムに

アルファベットを表示させてみよう。未知の事項はは乱数を

表示させる命令、12×12のマス、つまりセルを指定する命令

それに文字コードを文字列に変換する命令か・・・。

それではいつもの通り、ヘルプを調べてみよう。

せっかく買い求めた「一太郎マクロ入門」にはあまりお世話に

なることもないようだ。ヘルプの文例に下のように書いてある。

Randomize(ThisTime()) !! 乱数系列を再設定する

%val = Int(Rand() * 100) !! %val に0~99までの乱数が代入される

このあたりはVBAと同じだ。Rand()だけだと同じ乱数を

呼び出してしまうのでRand()を使う前にRandomize()

使って乱数のタネをつくるのであろう。その際、ThisTime()

現在の時刻を引数にする・・・このあたりはお約束だ。

 ついでに言うと変数valの前に付いている%valのスコープが

ローカルであることを意味する。もしもvalの前に$をつけると

valのスコープがグローバルであることを意味するということになる。

2007年4月20日 (金)

カーソルを移動するには(5)

他のシートに書き込むにはどうしたらよいのか?

これもいつものように記録マクロで調べてみることにした。

記録マクロを使ってコードのサンプルを得る・・・。これが

記録マクロの一番役に立つところだ。特に一太郎マクロや

三四郎マクロのように情報が得にくいものでは欠かせない。

くまぷーが買い求めた「一太郎マクロ入門」も悪い本では

ないのだろうが、本当のところはあまり参考にしてはいない。

記録マクロで作ったコードをおおいに参考にしている・・・。

さて記録マクロの言うところでは・・・

カレントシート切替(.シート名="Sheet2")

と記述すればSheet2をアクティベートできることがわかった。

しかしこのカレントシート切替()という命令はヘルプに載っていなかった。

ひょっとしたら英語名のものがあるのではないかと調べてみたら

ChangeCurrentSheet(<シート名>)という名前で記載されていた。

シート名は文字列で指定することもできるし、左のシートから

1,2,3・・・と番号で指定することもできるということである。

補足であるがJumpStart()で文書の頭にJumpEnd()で文書末に

カーソルを移動させることができる。尚、冗談のようだが

JumpStart()の代わりに「文書頭」、JumpEnd()の代わりに

文書末」と記述しても同じ効果がある。

 一太郎マクロはなかなか味が・・・・ある。

2007年4月19日 (木)

カーソルを移動するには(4)

 さて、もうひとつ気になることがある。一太郎はたしかVer.10から

複数シートをサポートするようになっている。

先程のJump()には別シートを指定するパラメータが

無いので別シートに書き込むことができない。

他のシートに書き込むにはどうしたらよいのか?

 くまぷーの買い求めた「一太郎マクロ入門」はVer.5、しかも

DOS版用なので役には立たない。

 この本も発行された1994年当時ならば良書だったの

だろうが2007年の今となっては・・・である。さて別シートに文字を

書き込むにはいったい、どうしたらいいのだろう?

カーソルを移動するには(3)

 Insert()の前にJump()を使ってあらかじめカーソルを移動させて

おけば任意の場所に文字を書き込めることがわかった。

しかし、ここで留意しなければならないことは他のユーザに

1ページの行数、1行の文字数を勝手に変更されてしまうと

マクロの実行結果が予期せぬものになってしまうということだ。

これは表計算ソフトで言えば行・列の思わぬ削除・挿入に当たるものと

考えればいいだろう。表計算ソフトであれば「保護」機能を使ってユーザの

思わぬ変更を禁止するのだが、一太郎にそのような「保護」機能が

あるのだろうか?残念ながら一太郎初心者のくまぷーには

そのような機能を見つけることはできなかった。

カーソルを移動するには(2)

また、記録マクロを使って自動生成されるコードを調べてみよう。

すると・・・

ジャンプ(.ページ番号=1,.行番号=2,.文字位置=11)

というコードが記録された。マクロバイザー(以下ヘルプ)を見てみると

     Jump(<ページ番号>, <行番号>, <文字位置>)
     ジャンプ(<ページ番号>, <行番号>, <文字位置>)

という書式らしい。「Jump」と「ジャンプ」はどちらも同じ命令だ。

エクセルや三四郎などの表計算ソフトであればシート、行、列の

3つのパラメータを指定して文字を書き込むが

ワープロソフト「一太郎」の場合はページ番号、行番号、文字位置を

指定する。ページ番号がシート、行番号が行、文字位置が列に

対応すると考えればわかりやすい。

従って下記のようにコードを記述すると
 

Jump(1,2,7)
Insert("世界よ こんにちは!!")

1ページの2行目の7文字目から「世界よ こんにちは!!」と

表示されることになる。

2007年4月18日 (水)

カーソルを移動するには(1)

前回のInsert()で文字を書き込むことはできる。

しかし、Insert()は現在のカーソルの位置に文字を書き込むので

カーソルを移動する方法がわからなければ任意の位置に

文字を書き込むことはできない。

カーソルを移動するにはどうしたらよいか?

カーソルの移動方法を極めることが一太郎マクロを

極める鍵になると思われる。

2007年4月16日 (月)

文字を書き込むコードは(2)

ヘルプによれば
挿入(.文字列="Hello World!!")
Insert("Hello World!!") 

 と書いても同じ動作をするはず。実験したら予測通りだった。

一太郎はワープロなのだから文字列を書き込むのが1番大切!!

これができれば一太郎マクロを半分征服したと言っても

言い過ぎではなかろう・・・(^。^)

文字を書き込むコードは

 さて、それではどこから始めようか?

一番大事なのはやはり文字の表示だろうか?

たいていのプログラミングの入門書では「Hello World!!」

と画面に表示させるところから始まるのがお決まりのようだし・・・。

それでは一太郎には記録マクロの機能があるのでそれを使ってみよう。

すると・・・

挿入(.文字列="Hello World!!")

というコードが記録された。

マクロバイザー(以下ヘルプ)を見てみると

     Insert("文字列", <挿入後処理>)
     挿入("文字列", <挿入後処理>)

という書式らしい。「Insert」と「挿入」はどちらも同じ命令だ。

日本語と英語の命令があるところが一太郎らしくて面白いところだ。

一太郎マクロってどう?

マクロを使えば決まり切った操作を何度も繰り返さずにすむ。
だから、マクロ機能を備えたアプリケーションソフトを
使い始めるとマクロを覚えたくなってくる。しかし、表計算ソフトに
比べるとワープロマクロを覚えようと思う人の数は少ないようだ。
 特に教員の世界ではワープロのマクロの使い手は限りなく
ゼロに近いように思える。

(●`ε´●):だって校務で作る文書なんてマクロよりも
      テンプレートを使って作るものの方が多いし・・・。

【´・ω・`】:マクロはパズルみたいで面白いんだけどな・・・。
      このコーナーでも回が進んでいくと漢字書取問題
      作成マクロなんてのを作るから・・・。

(●`ε´●):ところで一太郎マクロってどうなんだ?

【´・ω・`】:一昔前のクセのあるマニュアル車ってカンジかな。

(●`ε´●):???

【´・ω・`】:不便なところを「味がある」って思える人には
      面白いかもしれないが、そうでない人には
      単に古くさいだけと感じられるかもしれない。

(●`ε´●):例えば?

【´・ω・`】:やってみるとメニューに載っているコマンドが
      マクロ対応していなくて、工夫しなければ
      うまくできないなんてところがけっこうある。
      でも面白いと感じられる人にはそれがかえって面白い。

       今のオートマチック車は免許取り立ての若葉マークでも
      快適にしかも速く走らせることができる。でも走らせて
      楽しいか、わくわくさせてくれるか、というとどうだろう?

(●`ε´●):特大痔有恒みたいなことを言ってるな?
      俺は誰でも簡単に乗れる今時のクルマの方がいいが・・・。

      おまえはいまだに平成元年式のGTRに乗っているような

      男だしな・・・。

(・o・)ゲッ!! このマクロ解説本は?!

くまぷーの買い求めた一太郎マクロ入門であるが

扱っているのSuper Play Riteではなく

Super のつかないただのPlay Rite である。

マクロ言語が現在のものではなくて古いものである。

しかも扱っている一太郎はVer.5でさらにDOS版なのだ。

一太郎初心者にはかなり、トホホなものなのだが

新しいものが無い以上、贅沢は言っていられない。

付録の2DDのフロッピーがなんとも時代を感じさせてくれる。

さっと目を通してみるとフローチャートが書いてあった。

今時、まともなプログラミングの本からはフローチャートなんて

絶滅してしまったのに・・・ここでもまた古さを感じさせてくれた。

2007年4月15日 (日)

くまぷー、一太郎マクロを始める

 戯れに「一太郎マクロ」なるものを始めてみた。

WORD一人勝ちの今、いまさら「一太郎マクロ」が

使えるようになったからといって、別にどうということはないのだが

本当になんとなく気まぐれで始めてしまった。

 エクセルVBAやアクセスVBAの参考書なら

それこそ腐るほど売っているのだが

ワープロ用のマクロ本となるとワードのものでさえわずかであり

「一太郎マクロ」に関するものは全く手に入らない状態である。

それがアマゾンの中古本コーナーを見ていたら

「らくらく、 かんたん 一太郎マクロ入門 大鳥匠著(以下一太郎マクロ入門)」と

いうのがあったのでこれを買い求め参考にすることにした。

値段は定価2500円が2000円であった。