2017-05-21 4 views
-1

約15枚のワークブックがあり、それぞれがセル「A1」から「Z1」データのデータを含む約5000枚です。これらのシートをすべて「コンパイル済み」という名前のファイルにコンパイルする必要があります。複数のシートと複数のファイルから特定のブックに複数のファイルを編集するためのVBAコード

単純に言えば、15 xlsmファイルに1つのシートに1つのデータ行があります。これらの行はすべて1つのシートにコンパイルする必要があります。

しかし、 "12345A"、 "B1"にはいくつかのデータ、 "C1"にはいくつかのデータが含まれています。

"A1"、 "B1"、 "C1"データを共有するシートがあります。したがって、これらのシートからデータをコピーする場合、VBAコードは、この "A1"、 "B1"、 "C1"データを持つ行が既にコピーされているかどうかを確認し、特定の行の下の "D1"を "AB1"

サンプルシート sample sheet

楽しんで ​​

Private Sub Compiled() 

Dim thisWS As Worksheet, sheet As Worksheet 
Dim compiled As Workbook, thatWB As Workbook 

Dim path As String, fileName As String, compiledpath As String 
path = "C:\Users\User\Desktop\New folder\" 
fileName = Dir(path & "*.xlsm") 
compiledpath = "C:\Users\User\Desktop\compiled.xlsm" 

Set compiled = Workbooks(compiledpath) 
Set thisWS = compiled.Sheets("List") 

Dim arr(75000) As String 
Dim counter As Long 
counter = 0 
Do While Len(fileName) > 0 
    Set thatWB = Workbooks.Open(path & fileName, True, True) 
     For Each sheet In thatWB.Sheets 
      arr(counter) = thatWB.sheet.Range("A1").Value 
     Next sheet 
    counter = counter + 1 
    thatWB.Close Flase 
    fileName = Dir() 
Loop 
thisWS.Range(thisWS.Cells(1, 1), thisWS.Cells(coutner, 1)).Value2 = arr 
End Sub 

Error

Debugger Highlight

+2

**あなたが実行しようとしているコードを示していて、期待どおりに動作していないものを教えてもらえれば助かります。 – YowE3K

+0

正直言って、これは実際には本当に簡単です。すべてのオブジェクトの相互作用のために潜在的に時間がかかりますが、その単純さでは十分です。 –

+0

@ jonny.will問題は、文字列をブック変数に設定しようとすることです。最初に(文字列変数を使用して)ワークブックを開いて、ワークブックを現在のものに設定する必要があります。 –

答えて

0

をコンパイルしたサンプル:P

Private Sub this() 
    Dim path As String, fileName as string 
    path = "c:\" 
    fileName = Dir(path & "*.xl??") 
    dim thisWS as worksheet, sheet as worksheet 
    set thisWS = ThisWorkbok.Sheets("Sheet1") 
    dim thatWB as workbook 
    dim arr(75000) as string 
    dim counter as long 
    counter = 0 
    Do While Len(fileName)>0 
     Set thatWB = WorkBooks.Open(path & fileName, True, true) 
      For Each sheet in thatWB.Sheets 
       arr(counter) = thatWB.sheet.Range("A1").Value 
      next sheet 
     counter = counter + 1 
     thatWB.close Flase 
     fileName = Dir() 
    Loop 
    thisWS.Range(thisWS.Cells(1,1), thisWS.Cells(coutner,1).Value2 = arr 
End Sub 
+0

その価値があることに気付くことは、あなたのやっていることへの答えは、文字通り、SOのExcel-VBAドキュメント部分で利用可能であるということです。 –

+0

@ jonny.will alright FINEあなたはそれを今試しました。私のコードの残りの部分を持つことができます:) –

+0

私はそれを試して、間違いをしているのは分かりませんでした.... –

関連する問題