2016-04-10 11 views
0

これまでに経験したことのないコーディング要件について助けが必要です。私はちょうど数年前にここで育てられた同じような問題をブラウズしました - VBA to Copy files using complete path and file names listed in Excel Object。 私の問題はOPと似ていますが、OPよりやや簡単です。VBA - パスとしてコピー

それぞれに約100個の.csvファイルを含む多数のフォルダがあります。各フォルダごとに、各ファイルのパスを開いているワークシートにコピーする必要があります。 .csvファイルの各フォルダには、独自の関連ブックがあります。

例として、開いているブックはF:\SM\M400AD.xlsmであり、アクティブなワークシートはCSV_Listです。 .csvファイルを含むフォルダはF:\SM\M400ADです。 手動でそれをやって、私のシーケンスは次のようになります。

オープンフォルダF:\SM\M400AD

私はそれを手動で行う場合には、ワークシートのRange("B11")CSV_List

にすべて

コピーパスに

貼り付け]を選択して、など上記のようなリストが表示されます:

"F:\SM\M400AD\AC1.csv" 
"F:\SM\M400AD\AC2.csv" 
"F:\SM\M400AD\AE.csv" 
"F:\SM\M400AD\AF.csv" 
"F:\SM\M400AD\AG.csv" 
"F:\SM\M400AD\AH1.csv" 
"F:\SM\M400AD\AH2.csv" 
"F:\SM\M400AD\AJ.csv" 

と私は100のパスのリストを持っているまでページを下に。この単一の列リストは、Range("B11")から始まるワークシートCSV_Listに貼り付けられます。

私はこれを自動化する必要があり、VBAの教祖が親切にこれをコード化できるなら、感謝します。このような質問の

+0

_v VBAの教師が親切に私のためにこれをコーディングすることができました。それはSOの仕組みではありません。 [ヘルプ] –

答えて

1

は、例えば、以前に頼まれました:

Loop through files in a folder using VBA?
List files in folder and subfolder with path to .txt file

違いは、あなたがワークブックOpenイベントでコードを実行したい意味し、それを「自動」にしたいです。

これを達成する方法は?

  1. オープンF:\SM\M400AD.xlsmファイル。
  2. ゴー(​​F11
  3. を挿入し、新しいモジュールとコードの下にコピーし、コードペイン

    Option Explicit 
    
    Sub EnumCsVFilesInCurrentFolder() 
    
        Dim sPath As String, sFileName As String 
        Dim i As Integer 
    
        sPath = ThisWorkbook.Path & "\" 
        i = 11 
        Do 
         If Len(sFileName) = 0 Then GoTo SkipNext 
         If LCase(Right(sFileName, 4)) = ".csv" Then 
          'replcae 1 with proper sheet name! 
          ThisWorkbook.Worksheets(1).Range("B" & i) = sPath & sFileName 
          i = i + 1 
         End If 
    
    SkipNext: 
         sFileName = Dir(sPath) 
        Loop While sFileName <> "" 
    
    End Sub 
    
  4. ThisWorkbookモジュールにアクセスし、手順の下に挿入します。

    Private Sub Workbook_Open() 
        EnumCsVFilesInCurrentFolder 
    End Sub 
    
  5. ブックを保存して閉じる

ブックはすぐに使用できます。開くと、EnumCsVFilesInCurrentFolderマクロが実行されます。

注:上記のコードを変更してレコード数を制限する必要があります。

+0

@TobyAllenをよく理解してください。私の答えを改善してくれてありがとう。 –

関連する問題