■テキストファイルへのデータ書き出し

―WRITE#ステートメント

 まず個々の営業社員が発注データを入力し、共有フォルダ内の「発注情報.txt」に書き込む処理を作成します。データの入力部分に関しては、やはりモードレスなユーザーフォームを複数作成しておき、入力作業をラクに行なえるようにしておくのが望ましいでしょう。
 データの入力が済んだら、テキストファイル「発注情報.txt」に書き込みを行ないます。この時も、直感的に作業ができるように、書き込みたいデータの範囲をマウスでドラッグして選択してもらい(図16)、ユーザーフォームのボタンを押すと、選択した範囲内のデータを「発注情報.txt」に追加するようなコードを作成してみましょう。

図16:発注情報.txtに書き込みたい個所を選択する

 Sub AppendHattyu()
     myFRow = Selection(1).Row
     myLRow = Selection(Selection.Count).Row
     ' 選択範囲のうち「先頭のセル」の行番号と
     '「最後のセル」の行番号を取得し、
     ' 書き出すデータの範囲を決定する
 
     Dim myItem(1 To 6)
 Sub AppendHattyu()
     myFRow = Selection(1).Row
     myLRow = Selection(Selection.Count).Row
        ' 選択範囲のうち「先頭のセル」の行番号と、
        ' 「最後のセル」の行番号を取得し、書出すデータの範囲を決定する
     
         Dim myItem(1 To 6)
         ' 日付・担当者・顧客名・商品・数量・NO.の6つの情報を
         '  格納するために配列形式の変数を宣言する
     
         Open "¥¥Jimu¥発注¥発注情報.txt" _
                               For Append Lock Read Write As #1
         ' テキストファイルをAppend(追加モード)で開き、
         ' 同時に他のユーザーがテキストファイルを開けないようにロック
         For i = myFRow To myLRow
         ' 選択範囲の行に対して処理を行なう
             If Cells(i, 1) = "" Then
   
         '  選択したデータがすでに書き込まれていないかのチェック
                 For j = 2 To 7
                     myItem(j) = Cells(i, j)
                 Next
        ' 選択範囲行の2列目〜7列目のデータを配列に格納する
    
                 Write #1, Format(myItem(1), "m月d日"),  _
                             myItem(2), myItem(3), myItem(4), _ 
                             myItem(5), myItem(6)
     
        '  配列に格納したデータを順番に追加する
     
                 Cells(i, 1) = "済"
        ' データのある行の1列目に書き込み完了のマークを入れる
             End If
         Next
     
         Close #1
        ' テキストファイルの編集を終了する
         Exit Sub
     End Sub
 特定のテキストファイルなどに追加してデータを書き込むには、Openステートメントでファイルを指定した後、「Append」モード(追加モード)の指定を行ないます。その後、「Selectionプロパティ」を使用して「現在の選択範囲」に含まれる行をチェックし、該当行の項目を「発注情報.txt」に追加してゆきます。最後に「Closeステートメント」を使用してテキストファイルの編集を終了します。実行前と実行後の「発注情報.txt」の情報を見比べると、選択範囲のデータが追加されているのが確認できます(図17)。また、今回はサンプルコードということで省略してありますが、同時に2人以上のユーザーが「発注情報.txt」をOpenする場合、2人目以降はOpenすることができずエラーとなってしまうので、エラー用の処理も追加してあげると、より洗練されたアプリケーションが作成できるでしょう。

図17:選択範囲のデータが発注情報.txtに追加される

 また、ユーザーフォームを作成する際にも、データ入力の際にはユーザーフォームは現在選択しているセルや範囲などのアクティブな行に対してデータの書き込みや追加などの処理を行なう、というような、統一された操作の方向づけを行なってあげると、ユーザーにとってはより使いやすいアプリケーションとなるでしょう。