目次へ戻ります
VB サンプル


VB ファイル操作編

ファイルやフォルダを作ったり、消したり、調べたり・・・
●ChDriveドライブを変更する
●ChDirフォルダを変更する
●CurDirカレントパスを取得する
●Dirフォルダがあるかどうか調べる
●Dirファイルがあるかどうか調べる
●FileCopyファイルをコピーする
●FileDateTimeファイルのタイムスタンプを取得する
●FileLenファイルサイズを取得する
●GetAttrファイルまたはフォルダの属性を調べる
●Killファイルを削除する
●MkDirフォルダを作成する
●Nameファイルまたはフォルダの名前を変更(移動)する
●RmDirフォルダを削除する
●SetAttrファイルの属性を設定する
【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リファレンスを参照。

目次へ戻ります