私は以前の質問に親切に答えてくれました。コードが3枚のシートを1枚だけループしているテスト環境で完全に機能する次のコードが与えられましたデータと3列。データをループする際にセットシートからコピーできません
以下は、16個の列を通過するコードです。しかし、私が直面している問題は、ライブ環境でシートを開くときに、サブブックにはすべて「参照」、「詳細」、「要約」、および「呼び出し」の4つのタブが含まれていることです。
コードは、私が唯一の「コール」タブ内のループ内の各ワークブックから以下のコードでデータを取るしたいと思っていますFor Each sheet In ActiveWorkbook.Worksheets
が含まれています。誰でもこれを行うために既存のループに変更をお勧めできますか?
Sub Theloopofloops()
Dim wbk As Workbook
Dim Filename As String
Dim path As String
Dim rCell As Range
Dim rRng As Range
Dim wsO As Worksheet
Dim sheet As Worksheet
Set sheet = ActiveWorkbook.Sheets(Sheet2)
path = "M:\Documents\Call Logger\"
Filename = Dir(path & "*.xlsm")
Set wsO = ThisWorkbook.Sheets("Master")
Do While Len(Filename) > 0
DoEvents
Set wbk = Workbooks.Open(path & Filename, True, True)
For Each sheet In ActiveWorkbook.Worksheets
Set rRng = sheet.Range("A2:A20000")
For Each rCell In rRng.Cells
If rCell <> "" And rCell.Value <> vbNullString And rCell.Value <> 0 Then
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(1, 0).Value = rCell
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 1).Value = rCell.Offset(0, 1)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 2).Value = rCell.Offset(0, 2)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 3).Value = rCell.Offset(0, 3)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 4).Value = rCell.Offset(0, 4)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 5).Value = rCell.Offset(0, 5)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 6).Value = rCell.Offset(0, 6)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 7).Value = rCell.Offset(0, 7)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 8).Value = rCell.Offset(0, 8)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 9).Value = rCell.Offset(0, 9)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 10).Value = rCell.Offset(0, 10)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 11).Value = rCell.Offset(0, 11)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 12).Value = rCell.Offset(0, 12)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 13).Value = rCell.Offset(0, 13)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 14).Value = rCell.Offset(0, 14)
wsO.Cells(wsO.Rows.Count, 1).End(xlUp).Offset(0, 15).Value = rCell.Offset(0, 15)
End If
Next rCell
Next sheet
wbk.Close False
Filename = Dir
Loop
End Sub
+私の考えを正確に。あなたが1枚だけを使っている場合、なぜ各シートをループするのですか? –
ありがとうございます。あなたは私が輸入をスピードアップできる方法を知っていますか?私のフォーマットは、1つのMastersheetを持っていて、その後4つのタブを持つ11のwkbksのディレクトリにあります(私は1つのタブから "Calls"とそのタブの "Table1"にあるデータのみを求めています。しかし、日付をマスターシートに貼り付けるときに情報を取得するのは簡単ですが、フォーマットが英国からアメリカに変更されたため、12月1日が1月12日に貼り付けられました。コードはゆっくりと動作します。 – MBrann