最近、VBAの作業を開始し、プロジェクトを割り当ててプロジェクトを割り当てました。フォルダ内のファイルをExcelでルーピングし、列を抽出し、1つの空の列を間に入れてマスターファイルに貼り付けます。
今のところ、このマクロはすべてのExcelファイルのフォルダをループしています。それぞれの範囲を抽出し、その間に1つの空の列を置いて、マスターブックに1つずつ範囲を貼り付けます。
私は別の元のブックを追加したいが、私の評判はまだこれを許可しません。
次のコードは私が過去数週間を思いついたものですが、それはもっとクリーンなものになると思います。
今のところ、貼り付けられた列の間に空の列を取得できません。何らかの理由で最後に抽出された列が2回貼り付けられます。
これらの問題を教えてください。
Sub SelectDataTestLoop2()
'Dim file location and file name etc.
Dim FilePath As Variant
Dim FileName As Variant
Dim WBcount As Integer
Dim OtherWB As Workbook
Dim ThisWB As Workbook
Dim ThisWS As Worksheet
Dim WS As Worksheet
'Sheet in which the data needs to be pasted (SignalCompilationFile)
Set ThisWB = ActiveWorkbook
Set ThisWS = ActiveSheet
'Define file location and file name
FilePath = "C:\Users\907443\Desktop\VBA Test\FileTestMap\"
FileName = Dir(FilePath & "*.xls?")
WScount = 0
'Loop over all files in a folder, copy/paste data
While FileName <> ""
Set OtherWB = Workbooks.Open(FilePath & FileName)
For Each WS In OtherWB.Worksheets
Set CopyRange = OtherWB.Worksheets(4).Range("H2:H114")
Set PasteRange = ThisWS.Cells(21, 14)
CopyRange.Copy
PasteRange.Offset(0, WScount).PasteSpecial xlPasteValues
WScount = WScount + (1/7)
Next WS
FileName = Dir()
Set OtherWB = Nothing
Wend
ThisWB.Activate
ThisWS.Activate
Set ThisWB = Nothing
Set ThisWS = Nothing
End Sub
いくつかの注意事項:(1)(浮動小数点数 '0.142である...') '1/7'を追加しない方法整数カウンタに' WScount = WScount +(1/7) '任意の意味をなさない?ここで何をしようとしていますか? (2)何も変数を設定する必要はありませんVBAは、これを自動的に 'End Sub'で行います。 (3)あなたがなぜ必要なのか分からない限り、 'Variant'を使用しないでください。 'FilePath'と' FileName'は 'String'でなければなりません。 –
完了したら 'OtherWB'を終了したいかもしれません...' OtherWB.Close' –
@Peh(1)あるブックのデータを一度追加する必要があると付け加えませんでした。 1/7を追加することは、7回ではなく1回だけマクロ貼り付けを行うためのメークシフトソリューションでした。ソースブックには7つのワークシートが含まれています。 (2)それはVBAの私の不足の産物です(まだ)。まだコードのすべての部分の(ir)関連性はまだわかりません。 (3)パート(2)と同じです。ここで私の質問をしている情報のおかげです。 – SkeXyz