過去ログ

                                Page     174
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼dir関数で2つのファイルを処理したい  のっつ 02/10/7(月) 18:11
   ┗Re:dir関数で2つのファイルを処理したい  こうちゃん 02/10/7(月) 21:38
      ┗Re:dir関数で2つのファイルを処理したい  のっつ 02/10/7(月) 22:00

 ───────────────────────────────────────
 ■題名 : dir関数で2つのファイルを処理したい
 ■名前 : のっつ
 ■日付 : 02/10/7(月) 18:11
 -------------------------------------------------------------------------
   こんにちは。ちょっと質問なのですが、今、"text"というフォルダ(この中にはbit_1〜bit_120という名前のファイルが120個入っています)に入っているファイルを開き一部分をコピーして、"excel"というフォルダ(この中には1〜120という名前のファイルが120個入っています)のあるシートに貼り付けたいと思っています。
そこでDir関数を用いて順順にファイルを取得しようと思ったのですが、2つのDir関数を一気に使えないようで、エラーが出てしまいます。

どのように書けばよいのでしょうか。また、Dir関数以外のもののほうがよいのでしょうか?教えてください。
お願いします。。

Sub AllFilesCopy()

  Dim sFolderName As String
  Dim sFolderName2 As String
  Dim sFileName As String
  Dim sFileName2 As String

  '対象フォルダの設定
  sFolderName = ThisWorkbook.Path & "\text\"
  sFolderName2 = ThisWorkbook.Path & "\excel\"
  
  '"DT"で始まるファイル名を取得
  sFileName = Dir$(sFolderName & "bit_*.dat")
  sFileName2 = Dir$(sFolderName2 & "*.xls")

  'ファイル名の列挙が終わるまで実行します
  Do Until sFileName = ""
   
    'ブックを開きます
    Workbooks.OpenText sFolderName & sFileName
    Workbooks.Open sFolderName2 & sFileName2

    'ブックに対する処理(サンプル)
    'OpenTextFile
    
    '次のファイル名を取得
    sFileName = Dir$()
    sFileName2 = Dir$()
  Loop

End Sub
 ───────────────────────────────────────  ■題名 : Re:dir関数で2つのファイルを処理したい  ■名前 : こうちゃん <nakajima19@hotmail.com>  ■日付 : 02/10/7(月) 21:38  -------------------------------------------------------------------------
   のっつ さん、こんばんは

Dir関数の2系統同時使用はできないので、Dir関数とファイルシステムオブジェクトを併用する例です。

Sub AllFilesCopy()

  Dim sFolderName As String
  Dim sFolderName2 As String
  Dim sFileName As String
  Dim sFileName2 As String
  Dim Fso As Object

  'ファイルシステムオブジェクト
  Set Fso = CreateObject("Scripting.FileSystemObject")
  
  '対象フォルダの設定
  sFolderName = ThisWorkbook.Path & "\text\"
  sFolderName2 = ThisWorkbook.Path & "\excel\"
 
  '"bit_"で始まるファイル名を取得
  sFileName = Dir$(sFolderName & "bit_*.dat")

  'ファイル名の列挙が終わるまで実行します
  Do Until sFileName = ""
    
    sFileName2 = Mid(sFileName, 5, (InStr(sFileName, ".dat") - 5)) & ".xls"
    
    If Fso.FileExists(sFolderName2 & sFileName2) = True Then
      'ブックを開きます
      Workbooks.OpenText sFolderName & sFileName
      Workbooks.Open sFolderName2 & sFileName2
      'ブックに対する処理(サンプル)
      'OpenTextFile
    Else
      MsgBox sFileName & "に対応するエクセルファイルがありません。"
    End If
  
    '次のファイル名を取得
    sFileName = Dir$()
  
  Loop
  
  Set Fso = Nothing

End Sub
 ───────────────────────────────────────  ■題名 : Re:dir関数で2つのファイルを処理したい  ■名前 : のっつ  ■日付 : 02/10/7(月) 22:00  -------------------------------------------------------------------------
   こうちゃんさん、ありがとうございます!
できました。
また何かありましたらよろしくお願いします。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 174