GEN MUTO'S HOMEPAGE  エクセル大事典  エクセルVBAを極める

エクセルExcel大事典 エクセル大事典TOPページへ
 ■ エクセルVBAを極める−VBAスーパーテクニック
  エクセルからファイルを操作してみよう!
 
■ エクセルからファイルを操作しよう3

前回に続き、FileSystemObjectファイルシステムオブジェクトについて解説します。

TextStream オブジェクト
テキスト ファイルを読み書きできます。 

「TextStream オブジェクトのプロパティの一覧 」
AtEndOfLine TextStreamファイルのファイルポインタが行末記号直前に置かれている場合に真を、それ以外は偽を返します。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.ReadLine
    Debug.Print MyTxt.AtEndOfLine
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、ReadLineメソッドで1行だけ読み込ませています。テキストファイルの文章が1行しかなければAtEndOfLineはTrueを、複数行ならFalseを返します。(行末の改行は無視します)

AtEndOfStream TextStreamファイル内でファイルポインタがファイル終端に置かれている場合真を、それ以外は偽を返します。 
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.Read(5)
    Debug.Print MyTxt.AtEndOfStream
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、Readメソッドで5文字だけ読み込ませています。テキストファイルの文章が5文字以内ならAtEndOfStreamはTrueを、5文字を超えるならFalseを返します。

Column ファイルポインタの文字位置(カラム番号)を返します。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.Read(5)
    Debug.Print MyTxt.Column
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、Readメソッドで5文字だけ読み込ませています。Columnプロパティは"6"を返します。

Line ファイルポインタの行位置(行番号)を返します。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.ReadLine
    Debug.Print MyTxt.Line
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、ReadLineメソッドで1行だけ読み込ませています。Lineプロパティは"2"を返します。

「TextStream オブジェクトのメソッドの一覧 」
Close TextStreamファイルを閉じます。 
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    Debug.Print MyTxt.ReadLine
    MyTxt.Close
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、ReadLineメソッドで1行だけ読み込ませた後、Closeメソッドで閉じています。

Read 指定された文字数を読み込んで返します。 
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    Debug.Print MyTxt.Read(5)
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、Readメソッドで5文字だけ読み込ませています。

ReadAll TextStreamファイル全体を読み込んで返します。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    Debug.Print MyTxt.ReadAll
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、ReadAllメソッドでテキストファイルの文章全体を読み込んでいます。

ReadLine 1行分を(改行文字を除く)読み込んで返します。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    Debug.Print MyTxt.ReadLine
  Set MyTxt = Nothing
この例では、test.txtをTextStreamオブジェクトに取得したあと、ReadLineメソッドで1行だけ読み込ませています。

Skip 指定された文字数をスキップして読み込みます。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.Skip 1
    Debug.Print MyTxt.Read(5)
  Set MyTxt = Nothing
この例では、TextStreamオブジェクトを1文字スキップし2文字目から5文字を読み込んでいます。テキストファイルの内容が「0123456789」の場合、「12345」が出力されます。

SkipLine 1行分スキップして読み込みます。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt")
    MyTxt.SkipLine
    Debug.Print MyTxt.ReadAll
  Set MyTxt = Nothing
この例では、TextStreamオブジェクトの先頭1行をスキップし、残りのすべてを読み込んでいます。1行目がヘッダ行で、とばして読み込みたいときなどに便利です。

Write 指定した文字列を書き込みます。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt", 8)
    MyTxt.Write "12345"
    MyTxt.Write "67890"
  Set MyTxt = Nothing
TextStreamオブジェクトを取得する際、OpenTextFileメソッドの第2引数を、2の書き込みまたは、8の追記で開きます。Writeメソッドは改行を行いませんので、この例ではtest.txtの末尾に「1234567890」の文字列が追記されます。

WriteLine 1行分の文字列と改行文字を書き込みます。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt", 8)
    MyTxt.WriteLine "12345"
    MyTxt.WriteLine "67890"
  Set MyTxt = Nothing
WriteLineメソッドは文字列と改行を書き込みます。文字列を省略した場合は、改行だけを書き込みます。

WriteBlankLines 指定された数の改行文字を書き込みます。
(例)
  Dim MyTxt As TextStream
  Set MyTxt = FSO.OpenTextFile("C:\test\test.txt", 8)
    MyTxt.WriteBlankLines 1
  Set MyTxt = Nothing
WriteBlankLinesメソッドは指定した行数分の改行を行います。この例ではtest.txtの末尾に1行分の改行(空行)が追記されます。

以上で、FileSystemObjectの解説を終わります。

なおサンプルコードでは、全てファイルパスが決め打ちされていましたが、実際に利用する際にはファイルの選択をダイアログから行いたい場合が多々あります。最後に、ファイル選択ダイアログの解説をしておきましょう。



ファイルを開くダイアログを使用する
Application.GetOpenFilenameメソッドを実行します。選んだファイルのフルパスを取得します。キャンセルを選択した場合はFalseが返ります。
(例)
Sub test()
Dim FSO As New FileSystemObject
Dim MyTxt As TextStream
Dim StrPath As String
  StrPath = Application.GetOpenFilename( _
                           FileFilter:="テキスト文書(*.txt),*.txt," & _
                                   "CSVファイル(*.csv),*.csv", _
                           FilterIndex:=1, _
                           Title:="GetOpenFilenameTest", _
                           MultiSelect:=False _
                           )
  Set MyTxt = FSO.OpenTextFile(StrPath, 8)
    MyTxt.WriteLine "*** GetOpenFilenameTest Succeeded ***"
  Set MyTxt = Nothing
  Set FSO = Nothing
End Sub
この例では、ファイルを開くダイアログより拡張子がtxtまたはcsvのファイルを選択し、そのフルパスを取得します。
取得したフルパスを使用して、TextStreamオブジェクトを作成、選択したテキストの末尾に
"*** GetOpenFilenameTest Succeeded ***"の文字列を追記します。

GetOpenFilenameの引数を詳しく見ていきましょう。

FileFilter
ダイアログに表示するファイルの種類を指定します。サンプルコードではテキスト文書とCSVファイルが選択できるようになっています。選択できるファイルの種類を増やしたいときは、さらに","で区切ってファイルの種類を追加します。
FilterIndex
FileFilterで複数のファイルを設定しているときにどのファイル種類をデフォルトで表示するかを設定します。サンプルコードでは1の"テキスト文書(*.txt)"がデフォルトになります。
Title
ダイアログのタイトルバーに表示される文字列を設定します。
MultiSelect
複数ファイルの選択を許可するかしないかを設定します。Trueで複数ファイルの選択を許可、Falseで許可しない設定になります。複数ファイルの選択を許可した場合、サンプルコードのStrPath変数はVariant型で定義する必要があります。MultiSelectをTrueにすると、Variant変数StrPathに開始値1の配列が返されます。たとえば、test1.txtとtest2.txtを選択した場合、StrPath(1)にtest1.txtのフルパスが、StrPath(2)にtest2.txtのフルパスがそれぞれ返ります。

以上、3回に分けてFileSystemObjectの解説を行ってきました。
ファイルを操作する方法はたくさんありますが、このFileSystemObjectオブジェクトは最も手軽に、その機能を実現してくれます。

あなたの開発する業務アプリをさらにグレードアップする、FileSystemObjectオブジェクト。
この機会に、ぜひマスターしてください。

>> 次の話にすすむ


サイト内検索ができます

Microsoft Most Valuable Professional

Microsoft MVP Excel
武藤 玄 プロフィール
 

■■■ 執筆した書籍 ■■■
 

EXCEL VBA 業務自動化
 

Excel VBA を5日でマスターする本
 

仕事を速くする Excel VBA 入門
 

Excel VBAと業務改善のポイントがわかる本
 

Access VBA ベーシック スタンダード
 

Excel VBA アクションゲーム作成入門
 

■■■ 連載中の記事 ■■■
 

Excel VBAで業務改善!
 

実務で使うExcel VBA
 


TOPページ


■ エクセルVBA超入門

 ・9ステップで"Hello World!"
  からオブジェクト指向まで!
  1."Hello World!"を表示しよう
  2.基本はデータの入出力
  3.繰り返し処理
  4.シートで簡易データベース
  5.名前をつけよう
  6.構造化プログラムに挑戦
  7.構造体を使ってみよう
  8.フォームを使ってみよう
  9.オブジェクト指向に挑戦

■ エクセルVBA中級編

 ・VBAでいろんなテクニック
  変数・関数のスコープ
  引数の参照方法を明示
  配列の中身を一気に複写
  識別子がよいコードを作る
  データ定義型をもっと知ろう
  定数と列挙型を活用しよう
  エラー処理の重要性1
  エラー処理の重要性2
  いろいろな条件分岐
  いろいろな繰り返し処理
  演算子について知ろう
  文字列操作 連結 変換 置換
  文字列操作 検索 比較 書式
  日付操作関数を知ろう
  数値操作・評価・その他関数
  並び替えソートをマスター
  いろいろな検索をマスター
  VBEditorを使いこなそう
  マクロの記録を活用しよう1
  マクロの記録を活用しよう2
  VBAからVBEを操作しよう1
  VBAからVBEを操作しよう2
  VBAからVBEを操作しよう3
 ・ワークシートを使いこなす
  セルの参照をマスターしよう
  セルの選択をマスターしよう
  セルの操作をマスターしよう
  セルの書式設定をマスターしよう
  行・列の操作をマスターしよう
  シートの参照をマスターしよう
  シートの操作をマスターしよう
  ブックの操作をマスターしよう
  ウィンドウの操作をマスターしよう
  イベントプロシージャを活用しよう
  ワークシートを印刷しよう1
  ワークシートを印刷しよう2
  音声(読み上げ)機能を操作しよう
  グラフを操作しよう
 ・ユーザーフォームを使いこなす
  ユーザーフォームを使おう
  UserFormsオブジェクト
  Labelコントロール
  TextBoxコントロール
  ComboBoxコントロール
  ListBoxコントロール
  CheckBoxコントロール
  OptionButtonコントロール
  ToggleButtonコントロール
  CommandButtonコントロール
  ScrollBarコントロール
  SpinButtonコントロール
 ・VBA関数の一覧
  Aから始まる関数の一覧
  Cから始まる関数の一覧
  Dから始まる関数の一覧
  Eから始まる関数の一覧
  Fから始まる関数の一覧
  Gから始まる関数の一覧
 
■ エクセルVBAを極める
 VBAスーパーテクニック
 
 ・データベースへ接続してみよう!
  CSVファイルへの接続
  ワークシートへの接続
  mdbファイルへの接続
  SQL Serverへの接続
  ADOレコードセットの操作1
  ADOレコードセットの操作2
 ・ファイルを操作してみよう!
  FileSystemObjectの操作
  Drive File Folderの操作
  TextStream ダイアログ
  ステートメントでファイル操作1
  ステートメントでファイル操作2
 ・他アプリと連携してみよう!
  ActiveXオートメーションの操作
 ・ゲーム技でマクロを超える
  エクセルで音を鳴らす1
  エクセルで音を鳴らす2  
  スクリーン座標を取得
  様々なイベント取得
  リボンUIを制御しよう1
  リボンUIを制御しよう2
  シート上でアニメを動かそう
 
■ 一歩上行くエクセル
 基本操作の完全マスター!

 
 ・あなたはいったい
  エクセルで何をしたいのか?
  エクセルで業務効率化
  エクセル関数を使いこなす
  エクセルの便利技
  エクセルは最高の帳票ツール
 ・エクセル基本操作上級編!
  セル選択、コメント、シリアル値
  オート機能を使いこなそう!
  参照、条件付書式、入力規則
  関数をもっと理解しよう!
  配列数式を有効利用しよう!
  データの正規化をしよう!
  ショートカットキーを利用しよう1
  ショートカットキーを利用しよう2
  Office用アプリを作成しよう!
  PowerPivotとExcelで簡単BI!
 ・世間の誤ったエクセルの
  べからず集
  エクセルで文章を書くべからず
  エクセルで図形を描くべからず
  エクセルでシステムをつくるな
 
■ エクセル関連その他

 ・エクセルコミニュティにあなたも
  参加しませんか?
  Excel関連リンク・コミニュティ
 ・VBの理解がVBAをマスターする
  最短距離!
  VB関連の老舗・大家サイト
 ・エクセルExcel大事典掲示板
 ・プライバシーポリシー

2000アイテムを超えるラベルを販売
送料無料、即納対応の優良ショップ
今買っているラベルより確実に安い!
OAラベルの販売専科グラフトラベル




エクセルExcel大事典ははリンクフリーです エクセル大事典Excel大事典
お問い合わせはこちら gengengen@yahoo.co.jp

Copyright© Gen Muto 武藤 玄 All Rights Reserved,