第10回:簡単メモ帳を作ろう その2


保存するには

保存をするとき、どんなソフトでもたいてい「上書き保存」「名前を付けて保存」
の2つがあると思います。その流れを下に書いてみます。

上書き保存: あらかじめ設定されたファイル名とフォルダ(ディレクトリ)を使って、
         テキストボックスの内容をファイルに書き込む
名前を付けて保存: コモンダイアログを使ってファイル名とディレクトリを設定して、
            テキストボックスの内容をファイルに書き込む

テキストボックスの内容をファイルに書き込む」という作業が両方で出てきます。
こういうときにはサブプロシージャを使うことにします。
これを使えば1つのコードを繰り返し使うことで作業の効率も上がります。

サブプロシージャを呼び出すには、Callを使います。
たとえばSaveというサブプロシージャを呼び出す際には Call Save と書くだけです。

保存のためのプロシージャ

まずコードが表示された状態で「ツール」→「プロシージャの追加」を選びます。
名前はSave、種類はSub、適用範囲はPublicとして「OK」を押します。

Public Sub Save()とEnd Subの間にコードを書いていきます。
Public Sub Save()
  ' エラーが起きたときはCancelErrorのある行へ
  On Error GoTo CancelError
  ' 変数strFileNameにファイル名が指定されているファイルを
  ' ファイル番号1として開きます

  Open strFileName For Output As #1
    ' テキストボックスの文字をファイル番号1にPrintします
    Print #1, txtMain.Text
  ' Openで開いたファイル番号1を閉じます。
  Close #1

  'エラーが起きたらそのまま終了します
CancelError:
End Sub


これさえ作っておけば後は簡単です。
まずはcomSaveのコードです。
Public Sub Save()
  ' エラーが起きたときはCancelErrorのある行へ
  On Error GoTo CancelError
  ' Saveサブプロシージャを呼び出します。
  Call Save
End Sub
これだけでいいんです。おどろきました?
エラーが起きたらなにもせずに終了するだけで、後はやることはなにもないのです。
これがサブルーチンを使う理由になるのです。

今度はcomSaveasのコードを書きましょう。
こちらはSaveダイアログを開いたところでサブルーチンを呼び出すようにします。

Public Sub Saveas()
  ' エラーが起きたときはCancelErrorのある行へ
  On Error GoTo CancelError
  ' プロパティを設定します
  dlgFile.Filter = "すべてのファイル (*.*)|*.*|" & _
  "テキスト ファイル (*.txt)|*.txt|" & _
  "バッチ ファイル (*.bat)|*.bat"
  dlgFile.FilterIndex = 2
  dlgFile.Flags = cdlOFNHideReadOnly
  dlgFile.FileName = strFileName
  ' Saveダイアログを表示します
  dlgFile.ShowSave

  ' Saveサブプロシージャを呼び出します。
  Call Save
End Sub

さっきのcomSaveのコードよりは長いもののそんなに大変ではないのでは無いでしょうか。
dlgFile.Filterからの3行は保存できるファイル形式に関するものです。
ここにあるものを参考にしていろいろな形式で保存できるようにするのもいいでしょう

第11回では文字の編集に関する操作を説明していきます。
第11回へ | 表紙へ
CopyRight(C) 1998-1999 カジ