VB6 リファレンス お品書き へ戻ります
Visual Basic6 リファレンス


VB6 ファイル操作
ファイルやフォルダのコピー、移動、削除など、ファイルの操作、ファイル情報の取得

お品書き
● ChDriveドライブを変更する
● ChDirフォルダを変更する
● CurDirカレントパスを取得する
● Dirフォルダがあるかどうか調べる
● Dirファイルがあるかどうか調べる
● FileCopyファイルをコピーする
● FileDateTimeファイルのタイムスタンプを取得する
● FileLenファイルサイズを取得する
● GetAttrファイルまたはフォルダの属性を調べる
● Killファイルを削除する
● MkDirフォルダを作成する
● Nameファイルまたはフォルダの名前を変更(移動)する
● RmDirフォルダを削除する
● SetAttrファイルの属性を設定する
● Q&A指定フォルダに存在するファイル名を全て取得したいのですが
● Q&A指定フォルダが存在しなければフォルダを作成したいのですが


● ChDrive ステートメント
【機能】現在のドライブを変更します。
【書式】ChDrive ドライブ名
【 例 】ChDrive "D"


● ChDir ステートメント
【機能】現在のフォルダを変更します。
【書式】ChDir パス
【 例 】 ChDir "C:¥WORK¥SAMPLE"
ChDir "C:¥WORK¥SAMPLE¥"

  ※ パスが存在しない場合は、エラーが発生します。

  ※ ドライブを変更しても、カレントドライブは変更されません。
      ChDrive "D"
      ChDir "D:¥WORK¥SAMPLE"


● CurDir ステートメント
【機能】現在のパスを返します。
【書式】
【書式】
result = CurDir
result = CurDir ドライブ名
【 例 】result = CurDir  →  C:¥WORK¥SAMPLE


● Dir 関数
【機能】指定のフォルダがあるかどうか調べる
【書式】フォルダ名 = Dir ( フォルダパス , vbDirectory )
【 例 】result = Dir("c:¥work¥test", vbDirectory)  → "test"
result = Dir("c:¥work¥test¥", vbDirectory)  → "."

  ※ 指定したフォルダが存在しなければ、ヌルストリングが返ります。


● Dir 関数
【機能】指定のファイルがあるかどうか調べる
【書式】ファイル名 = Dir ( ファイル名 )
【 例 】result = Dir("C:¥WINNT¥WIN.INI")  → "win.ini"

  ※ 指定したファイルが存在しなければ、ヌルストリングが返ります。


● FileCopy ステートメント
【機能】ファイルをコピーします。
【書式】FileCopy コピー元ファイル名 , コピー先ファイル名
【 例 】FileCopy "C:¥WORK¥TEST.TXT", "C:¥WORK¥SAMPLE.TXT"

  ※ コピー先ファイル名が存在した場合は、上書きされます。
  ※ 指定したファイルが存在しなければ、エラーが発生します。
  ※ ファイルが使用中の場合は、エラーが発生します。


● FileDateTime 関数
【機能】ファイルのタイムスタンプを示すバリアント型 (内部処理形式 Date の Variant) の値を返します。
【書式】result = FileDateTime (ファイル名)
【 例 】result = FileDateTime("C:¥WORK¥TEST.TXT")  →  2006/11/30 17:38:30

  ※ 指定したファイルが存在しなければ、エラーが発生します。


● FileLen 関数
【機能】ファイルのサイズをバイト単位で表す長整数型 (Long) の値を返します。
【書式】result = FileLen (ファイル名)
【 例 】result = FileLen("C:¥WORK¥TEST.TXT")  →  86016

  ※ 指定したファイルが存在しなければ、エラーが発生します。
  ※ ファイルが使用中だった場合は、使用される前のサイズを返します。


● GetAttr 関数
【機能】ファイルまたはフォルダの属性を表す整数型 (Integer) の整数を返します。
【書式】result = GetAttr ( パス名 )
戻り値内容
vbNormal0通常ファイル
vbReadOnly1読み取り専用ファイル
vbHidden2隠しファイル
vbSystem4システム ファイル
vbDirectory16フォルダ
vbArchive32アーカイブ (属性最後にバックアップした後で、変更されたファイル)

【 例 】result = GetAttr("C:¥WINNT¥WIN.INI")  →  32
result = GetAttr("C:¥WINNT¥WIN.INI") And vbArchive  →  32
result = GetAttr("C:¥WINNT¥WIN.INI") And vbSystem  →  0

  ※ 指定したファイル名が存在しなければ、エラーが発生します。


● Kill ステートメント
【機能】ファイルを削除します。
【書式】Kill パス名
【 例 】Kill "C:¥WORK¥SAMPLE¥*.TXT"
Kill "C:¥WORK¥SAMPLE¥TEST.TXT"

  ※ ファイルが存在しなければ、エラーが発生します。
  ※ ファイルが読取専用の場合は、エラーが発生します。


● MkDir ステートメント
【機能】新しいフォルダを作成します。
【書式】MkDir フォルダパス
【 例 】MkDir "C:¥WORK¥SAMPLE"
MkDir "C:¥WORK¥SAMPLE¥"

  ※ 既に存在するフォルダを作成しようとすると、エラーが発生します。
  ※ 上位の階層フォルダ(例ではWORK¥)が存在しなければ、エラーが発生します(上位からフォルダを作っていってくれません)。


● Name ステートメント
【機能】ファイルまたはフォルダの名前を変更(移動)します。
【書式】Name 変更前ファイル名(フォルダ名) As 変更後ファイル名(フォルダ名)
【 例 】Name "C:¥WORK¥TEST.TXT" AS "C:¥WORK¥SAMPLE.TXT"
Name "C:¥WORK¥TEST.TXT" AS "C:¥WORK¥SAMPLE¥TEST.TXT"
Name "C:¥WORK¥" AS "C:¥SAMPLE¥"
Name "C:¥WORK" AS "C:¥SAMPLE"

  ※ 変更前ファイル名(フォルダ名)が存在しなければ、エラーが発生します。
  ※ ファイル(フォルダ)が使用中の場合は、エラーが発生します。


● RmDir ステートメント
【機能】フォルダを削除します。
【書式】RmDir フォルダパス
【 例 】RmDir "C:¥WORK¥SAMPLE¥"
RmDir "C:¥WORK¥SAMPLE"

  ※ フォルダが存在しなければ、エラーが発生します。
  ※ フォルダ内にファイルが存在すると、エラーが発生します。


● SetAttr ステートメント
【機能】ファイルの属性を設定します。
【書式】SetAttr パス名 , 属性
属性内容
vbNormal0(既定値) 通常ファイル
vbReadOnly1読み取り専用ファイル
vbHidden2隠しファイル
vbSystem4システム ファイル
vbArchive32アーカイブ (属性最後にバックアップした後で、変更されたファイル)
【 例 】SetAttr "C:¥WORK¥SAMPLE¥TEST.TXT", vbHidden
SetAttr "C:¥WORK¥SAMPLE¥TEST.TXT", vbHidden + vbReadOnly

  ※ ファイルが存在しなければ、エラーが発生します。
  ※ 使用中のファイルの属性を変更しようとすると、エラーが発生します。


● フォルダ内のファイル名を取得する。
【 Q 】
【 A 】
指定フォルダに存在するファイル名を全て取得したいのですが。
Dir関数を使うとこんな感じです。
【 例 】 Dim strTarget As String           '検索先フォルダ(ワイルドカード)
strTarget = App.Path & "¥*.*"  'ファイル名はすべて対象(*.*)

Dim strDir As String           '検索されたファイル名
strDir = Dir(strTarget)        '第1回目の検索
Debug.Print strDir

Do Until strDir = ""
   strDir = Dir()              '2回目以降の検索
   Debug.Print strDir
Loop

  ※ファイルの属性が隠しファイルの場合は抽出できません。


【 Q 】
【 A 】
上の例でファイル名を配列に格納したいのですが。
こんな感じです。
【 例 】 Dim strTarget As String           '検索先フォルダ(ワイルドカード)
strTarget = App.Path & "¥*.*"  'ファイル名はすべて対象(*.*)

Dim strFileTbl() As String     'ファイル名を格納する配列
Dim i As Integer
i = -1

Dim strDir As String           '検索されたファイル名
strDir = Dir(strTarget)        '第1回目の検索
If (strDir <> "") Then
  i = 0
  ReDim strFileTbl(i)
  strFileTbl(i) = strDir
End If

Do Until strDir = ""
  strDir = Dir()              '2回目以降の検索
  If (strDir <> "") Then
    i = i + 1
    ReDim Preserve strFileTbl(i)
    strFileTbl(i) = strDir
  End If
Loop

If (i >= 0) Then
  For i = LBound(strFileTbl) To UBound(strFileTbl)
    Debug.Print strFileTbl(i)
  Next
End If


● フォルダがなければ作成する。
【 Q 】
【 A 】
指定フォルダが存在しなければフォルダを作成したいのですが。
Dir関数とMkDir関数を使うとこんな感じです。
【 例 】 Dim strTarget As String          '対象フォルダ
strTarget = App.Path & "¥LOG¥"

If (Dir(strTarget, vbDirectory) = "") Then
  MkDir strTarget                'フォルダが無いので作る
End If

  ※MkDirの注意点は、MkDirリファレンスを参照。