プログラミング初級1
文字数カウント・プログラム(ステップ6)


ファイル名を入力して、文字数を表示する。


ステップ4で、とりあえず目的(ファイルの文字数のカウント)は果たせました。 ステップ5以降は、「より使いやすく」するための工夫です。
前回は、メッセージボックスを止めて、OKをクリックしなくてよいように変更しました。
今回は、ファイル名を、実行のたびに指定します。




ステップ6の仕様


  1. 「ファイル名を入力してください」を表示して、ファイル名の入力を受け付ける。
  2. 入力された名前のファイルをオープンする。
  3. ファイルの最後になるまで、以下の処理を繰り返す。
      (1) ファイルから1行読み込む。
      (2) 読み込んだ内容と文字数を、デバッグ画面に表示する。
  4. ファイルの全文字数を、メッセージボックスで表示する。
  5. ファイルを閉じる。



ステップ6のプログラム・ソース



  1. Sub Count6()
  2. '文字数カウント・プログラム
  3. 'ステップ6:ファイル名を入力して、文字数を表示する。
  4. Dim file_nm As String 'ファイル名用変数を宣言
  5. Dim gyo As String '読み込んだ行を入れておく変数を宣言
  6. Dim moji_su As Long '1行の文字数用変数を宣言
  7. Dim gokei As Long 'ファイルの文字数用変数を宣言
  8. Dim gyo_no As Integer '行番号用変数を宣言
  9. file_nm = "" 'ファイル名用変数の初期化
  10. gokei = 0 '合計用変数の初期化
  11. gyo_no = 0 '行番号用変数の初期化
  12. file_nm = InputBox("ファイル名を入力してください")
  13. Open file_nm For Input As #1 'ファイルのオープン
  14. Do Until EOF(1) 'ループ:条件EOF(1)になるまで、ここからの処理を繰り返す
  15. Line Input #1, gyo 'ファイルから1行読み込む
  16. moji_su = Len(gyo) '読み込んだ行の長さ(文字数)を '変数 moji_su へ入れる
  17. gokei = gokei + moji_su '合計用変数 gokei に文字数を加算する
  18. gyo_no = gyo_no + 1 '行番号を1アップ
  19. Debug.Print gyo_no & "行目は 「" & gyo & "」" '読み込んだ行の中身を表示する
  20. Debug.Print "文字数は " & moji_su '行の文字数を表示する
  21. Loop 'ループ:ここまでの処理を繰り返す
  22. MsgBox "ファイルの文字数は " & gokei '合計用変数 gokei の値を表示する
  23. Close #1 'ファイルのクローズ
  24. End Sub




解       説


ステップ5と、違うところだけ説明します。

  1. 4行目で、ファイル名用の変数を宣言します。
    ファイル名を入力しますので、それを入れておく変数が必要になります。 文字列型で宣言します。
    Dim の構文を思い出してくださいね。
    今まで出て来たデータ型の簡単な表
    文字/数字データ型表記
    文字文字列型String
    数字整数型Integer
    数字長整数型Long
    数字倍精度浮動小数点型Double



  2. 9行目で、ファイル名用の変数を初期化します。
    初期化するとき、数字には何を、文字には何を入れるのでしたか?


  3. 12行目で、ファイル名の入力を受け付けます。
    仕様の 2. にあたります。
    InputBox は、ダイアログボックスに メッセージを表示して、テキストボックスへの入力を受け付けます。 テキストボックスに入力された文字は、指定した変数に入れられます。構文は、
    変数名 = InputBox(メッセージ)
    です。


  4. 14行目は、ファイルのオープンです。
    今までみたいに、" ではさんだファイル名ではありません。 ファイル名用の変数を使用しています。
    Open の構文は、どうでしたっけ?
       「オープン ファイルめい フォー インプット アズ シャープ いちっ!」
    思い出しましたか?
    この時の「ファイル名」は、" ではさんだファイル名でも、変数でも構わないわけですね。





ステップ6実行前の準備


ステップ2で使用したのと同じファイルを使います。 もしまだ準備していない方がいましたら、ステップ2を見て準備してください。 ファイルの中身は、こうなっています。
abcde
bcde
cde
de
e




実       行


    動作確認してみましょう。

  1. カーソルの位置を確認してから、F5キーを押してください。


  2. 「ファイル名を入力してください」を表示して、ファイル名の入力を受け付けます。
    イメージ


  3. ファイル名を入力します。
    C:\My Documents\mojisu.txt と入力して、OKをクリックします。
    イメージ


  4. ファイルの文字数が、メッセージボックスで表示されます。

    イメージ


  5. イミディエイト・ウィンドウを見てください。

    イメージ


    ファイル名に、C:\My Documents\mojisu2.txt を入力したり、他のファイル名を入力して 正しい文字数が表示されるか、確認してみましょうね。



入れ替え


前回との違いがあまりないので、今回も入れ替えは1回だけ。
ソースの行の順番をでたらめにしたやつを、ここに書いておきます。 正しい順番に並べ替えてください。もちろん、正解を見ずにね。 それで正しいと思ったやつをコピーして、エラーが出ないかどうか試してみてください。




Line Input #1, gyo          'ファイルから1行読み込む
moji_su = Len(gyo)          '読み込んだ行の長さ(文字数)を
                            '変数 moji_su へ入れる
Sub Count6()
Dim gyo_no  As Integer      '行番号用変数を宣言
gyo_no = gyo_no + 1         '行番号を1アップ
Loop                        'ループ:ここまでの処理を繰り返す
gyo_no = 0                  '行番号用変数の初期化
'文字数カウント・プログラム
Dim gyo     As String       '読み込んだ行を入れておく変数を宣言
'             および文字数の合計を表示する。
gokei = gokei + moji_su     '合計用変数 gokei に文字数を加算する
Debug.Print "文字数は " & moji_su   '行の文字数を表示する
file_nm = InputBox("ファイル名を入力してください")
Dim moji_su As Long         '1行の文字数用変数を宣言
'ステップ6:ファイル名を入力して、文字数を表示する。
MsgBox "ファイルの文字数は " & gokei    '合計用変数 gokei の値を表示する
Dim file_nm As String       'ファイル名用変数を宣言
Do Until EOF(1)   'ループ:条件EOF(1)になるまで、ここからの処理を繰り返す
End Sub
gokei = 0                   '合計用変数の初期化
Close #1                    'ファイルのクローズ
Open file_nm For Input As #1  'ファイルのオープン
Debug.Print gyo_no & "行目は 「" & gyo & "」"  '読み込んだ行の中身を表示する
Dim gokei   As Long         'ファイルの文字数用変数を宣言
file_nm = ""                'ファイル名用変数の初期化




戻る

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!