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      
フォトアルバム

カテゴリー「Word VBA for Teachers」の6件の投稿

2008年12月 3日 (水)

整序問題作成マクロⅡ(1)

 以前、整序問題作成マクロをワードで作って

公開しましたところ、評判がかなりよくて作者としては

嬉しい限りです。

 さて、その際にある方から以下のようなご意見を頂きました。

(要約)整序問題を作る時に単語をグループ化出来るように

して欲しい。

 つまり、整序問題作成マクロでは

 下のような英文が・・・

Word0161

1.範囲選択をする。

Word0171

2.メニューをツール、マクロ、マクロと辿りダイアログボックスを出しShuffle_Writeを実行すると以下のようになる。

Word0181

・・・という機能だったのですが

例えば,全ての単語をばらばらにするのではなく a beautiful lady は

ひとまとめしておきたいならば下図のようにその語句を

半角のかっこで囲む・・・

Onest_060 *

*

*

・・・そして範囲選択してマクロを実行すると

*

*

Onest_059

・・・上図のようになる。

★整序問題作成マクロⅡの仕様

「整序問題作成マクロ」の機能に加えて単語のグループ化の

機能をもつ。グループ化する単語は半角のかっこで囲む。

(続く)

2008年11月30日 (日)

暗号化・復号化(8)

 下のコードは文字列を生の文字コードに(マクロ暗号化)、生の文字コードを文字列に変換するコード(マクロ復号化)です。生の文字コードでは

ダメだというならば前回、書いたとおり「0~9、A~F」を適当な文字に

置換するコードを「マクロ暗号化」の最後に付け加えるという手もあります。

(その時には、マクロ「復号化」の頭にもとの文字に戻す処理を

加えて下さい)

'------------------------------------------------------------

Sub 暗号化()
   
    Dim CharaCnt As Long
    Dim i As Long
    Dim MyExit As Integer
    Dim NetCharaNum As Long

   
    CharaCnt = Selection.Characters.Count
   
   
    For i = 1 To CharaCnt
        If (AscW(Mid(Selection.Text, i, 1)) > 30) Or (AscW(Mid(Selection.Text, i, 1)) < 0) Then NetCharaNum = NetCharaNum + 1
    Next
   
   
        For i = 1 To NetCharaNum
            Selection.Collapse
            Selection.MoveRight wdCharacter, 1, True
            Selection.ToggleCharacterCode
            Selection.Collapse wdCollapseEnd
                Do While Selection.Text = Chr(9) Or Selection.Text = Chr(11) Or Selection.Text = Chr(13)
                   Selection.MoveRight wdCharacter, 1
                   MyExit = MyExit + 1
                   If MyExit > 20 Then Exit Sub
                  
                Loop
                MyExit = 0
        Next

      
       
      
       
   
End Sub

'------------------------------------------------------------
Sub 復号化()
   
    Dim CharaCnt As Long
    Dim i As Long
    Dim MyExit As Integer
    Dim NetCharaNum As Long
   
   
    CharaCnt = Selection.Characters.Count
   
    For i = 1 To CharaCnt
        If AscW(Mid(Selection.Text, i, 1)) > 30 Then NetCharaNum = NetCharaNum + 1
    Next
   
   
        For i = 1 To NetCharaNum \ 4
            Selection.Collapse
            Selection.MoveRight wdCharacter, 4, True
            Selection.ToggleCharacterCode
            Selection.Collapse wdCollapseEnd
                Do While Selection.Text = Chr(9) Or Selection.Text = Chr(11) Or Selection.Text = Chr(13)
                   Selection.MoveRight wdCharacter, 1
                   MyExit = MyExit + 1
                   If MyExit > 20 Then Exit Sub
                  
                Loop
                MyExit = 0
        Next

      
       
      
       
   
End Sub

暗号化・復号化(7)

【´・ω・`】:実は今回の「暗号化・復号化」は「暗号化・復号化(5)」と

     「暗号化・復号化(6)」で書いたAlt + x で文字コードを文字に、

     または文字を文字コードに変換できることに気づいたところから

     全てが始まった。

(●`ε´●): 「これは遊べる!!」と喜んでいたな。

【´・ω・`】:うん、「くまぷー」が「304F307E307730FC」になるのは

     暗号を連想させた。一文字一文字、手で変換するのは

     かったるいから、VBAで自動化しようというのは当然の

     なりゆきだった。とりあえず記録マクロで調べてみると

     流石、ワード!!ちゃんとこれに対応するメソッドが

     用意されていたのだ。

(●`ε´●):それが「ToggleCharacterCode」というわけだな。

【´・ω・`】:うん。それでは、まずはマクロ「暗号化」の考え方から

      1.暗号化したいテキストの最初から一文字ずつ

        「ToggleCharacterCode」を実行する。

      2.その際、制御文字は無視する。

      3.文字コードのままでは暗号化と言えないと

        いうことであれば、3を@というように置換してやる。

     つぎにマクロ「復号化」の考え方を・・・

     1.上記3でやった反対の操作をおこなう。

       たとえば@を3に置換する。

     2. 先頭から4文字ずつひとまとめにして

       「ToggleCharacterCode」をかましていく。

     3.その際、制御文字は無視する。

(続く)

     

2008年11月29日 (土)

暗号化・復号化(6)

さて、前回の「暗号化・復号化(5)」は読んで頂けたでしょうか?

それではもう一つ、実験してみましょう。

ワードを立ち上げて下さい。

「くまぷー」と入力して下さい。

1.「く」を選択してAlt+xを押して下さい。

2.「ま」を選択してAlt+xを押して下さい。

3.「ぷ」を選択してAlt+xを押して下さい。

4.「ー」を選択してAlt+xを押して下さい。

SHZAAM!!

この手を使えばWordの暗号化・復号化が上手くできるはずです。

これなら、字体も維持されるでしょう。

暗号化・復号化(5)

 それでは、Wordを立ち上げて、ちょっとした実験を・・・

まずは日本語IMEをOFFにして・・・

1.304fと入力してAlt+x

2. 307eと入力してAlt+x

3. 3077と入力してAlt+x

4. 30fcと入力してAlt+x

さあ、なにが起きるでしょう? シャザーン!!SHAZZAM!!

暗号化・復号化(4)

【´・ω・`】:さてExcel版の「暗号化・復号化」ではかずさんが

     遊んでくれたので、こんどはWordで「暗号化・復号化」を

     やってみよう。

      ほんとうのことを言えばおいらはWord VBAはあんまり

    よく知らないので自信がないのだが生まれついてのお調子者だから

    仕方がない。

    仕様:大雑把ではあるが、テキストの暗号化。ただしオートシェイプだの

    コメントだの、図表の中のテキストは無視。

    さて、遊んでくれる人はいるかいな?