私はExcel VBAで非常に新しく、複数のExcelワークブックからのデータを新しいものにフェッチする際に質問があります。
ここで説明します:
1.メインフォルダ("C:\desktop\Main\"
)には複数のサブフォルダがあります(ここではfolder A1
とfolder A2
を例として取り上げます)。 "C:\desktop\Main\A1\"
& "C:\desktop\Main\A2\"
各サブフォルダには、複数のExcelがあります。たとえば
:folder A1
では、2つのフォルダ(3210とA1-2016.xlsx
)folder A2
で"C:\desktop\Main\A1\A1-2015.xlsx"
と"C:\desktop\Main\A1\A1-2016.xlsx"
があり、私は新しいExcelブックにこれらの優れ内のセルを取得したい
3つのフォルダ(A2-2015.xlsx
、A2-2016.xlsx
とA2-2017.xlsx
)があります。
2.したがって、item1の説明に基づきます。 A1(A1-2016.xlsx
)とA2(A2-2017.xlsx
)のうちの1つを例にとります。
A1は上記のように見えます。
A2には、固定されたセルに異なる番号/文字の同じテンプレートが含まれています。
3.私は次のようにそれらを取得したい:
すべてのExcelは、上記の例のようにテンプレートが固定されています。
複数の優れたフォルダが複数ある場合、どうすればいいですか? ありがとうございます。複数の固定セルを新しいものにする
0
A
答えて
3
これは、メインフォルダの下にいくつのレベルのサブフォルダがあるかを知るかどうかによって異なります。これが予測可能である場合、例えば。あなたは次の2つのレベル(メイン> A1)しかないことを知っています。それはかなりシンプルです。ファイルシステムオブジェクトを使用する場合は、ツール>参照メニューからMicrosoft Scripting Runtimeへの参照を追加する必要があります。
これを追加したら、次のコードを使用して作業を行います(ファイルからメインファイルにマージする情報を主に推測しているため、少し調整する必要があります) :
Sub Merge_Files()
Dim FSO As New FileSystemObject
Dim Main_Fold As Folder, Sub_1 As Folder
Dim Fil As File
Dim Main_WB As Workbook, New_WB As Workbook
Dim X As Integer, Y As Integer
Set Main_WB = ActiveWorkbook
Set Main_Fold = FSO.GetFolder("C:\Desktop\Main\") 'Replace this with a reference to your actual main folder.
For Each Sub_1 In Main_Fold.subFolders
For Each Fil In Sub_1.Files
Set New_WB = Workbooks.Open(Fil.Path)
For X = 2 To 1000
If Main_WB.Sheets(1).Range("A" & X).Value = "" Then
Main_WB.Sheets(1).Range("A" & X).Value = New_WB.Sheets(1).Range("C2").Value
Exit For
End If
If Main_WB.Sheets(1).Range("A" & X).Value = New_WB.Sheets(1).Range("C2").Value Then Exit For
Next X
For Y = 2 To 5
Main_WB.Sheets(1).Cells(X, Y) = New_WB.Sheets(1).Range("C" & (Y + 1)).Value
Next Y
For Y = 4 To 9
If Y = 6 Then Y = 7
If Y < 6 Then
Main_WB.Sheets(1).Cells(X, Y + 2) = New_WB.Sheets(1).Cells(9, Y)
Else
Main_WB.Sheets(1).Cells(X, Y + 1) = New_WB.Sheets(1).Cells(9, Y)
End If
Next Y
Main_WB.Sheets(1).Range("K" & X).Value = New_WB.Sheets(1).Range("K21").Value
New_WB.Close SaveChanges:=False
Next Fil
Next Sub_1
End Sub
関連する問題
- 1. 固定されたUITableViewに新しいセルを追加するには?
- 2. gspread範囲内にない複数のセルを更新する
- 3. 固定のエクセル式(移動するセルに依存しない)
- 4. 複数の重複する期間を新しいものにマージする
- 5. 複数の行の固定数のセルをExcelの1つの列に転置する
- 6. Excelでのセルの固定
- 7. 複数行のヘッダを固定し、カラムを固定したHTMLテーブル
- 8. VBAの使用:ダブルクリックのセルが新しいシートを作成し、セルも新しいシートにハイパーリンクされます
- 9. フェードタイムの後に複数のノードを固定する
- 10. 同じ固定値を複数の行に挿入します
- 11. firebaseデータベース固有のフィールド複数の場所を更新する
- 12. 複数のデバイスに固有の定型レイアウトに反応する
- 13. 紺碧に複数のバックエンドapiを固定する方法は?
- 14. コードを固定する(複数変数、ループとオブジェクトのリテラル)
- 15. 新しいワークブック/シートに特定のセルをコピーする
- 16. ブートストラップ4複数の固定トップナビゲーションバー
- 17. djangoで固定セルの行を生成するには?
- 18. 1つのセルのデータを複数のセルに分割する
- 19. 複数の入力のカスタムキーボードボタンを固定する
- 20. 複数のデバイスをサポートする固定幅のモバイルウェブページ
- 21. 固定長の複数行のテキストボックスを作成する方法
- 22. Primefaces DataTableで複数のセル値を更新する
- 23. 別のセル数値がある数値のときに新しいセル数値を入力するExcel式
- 24. シェルで固定線を新しいファイルにリダイレクトする方法
- 25. 複数のテキストをExcelスプレッドシートのセルで複数のセルに解析していますか?
- 26. IIS設定を新しいサーバーに複製する最も良い方法は?
- 27. 複数の新しいものと1つの削除
- 28. UICollectionView特定のセルのセル内容を更新します。
- 29. 文字列のような複数の列データフレームのセルに基づいて新しい列を作成する
- 30. 複数の列を処理し、新しい列を動的に指定する
私がVBAで新しくなったので、コードを教えてください。 「For X = 2 To 1000」と「For Y = 2 To 5」の場合、ここではわかりません。ありがとうございます –
コードはメインフォルダ内の各サブフォルダを循環します(アドレスを編集する必要があります)。そのフォルダの各サブフォルダを循環します(合計3レベル)。その後、これらのフォルダ内の各ファイルを順番に調べて、その中にあるファイルのみをExcelファイルに入れて、要求された値をコピーします(スクリーンショットで示した内容に基づいて推測します)。値をコピーするとExcelブック(メインではない)が閉じられ、変更が保存されません(元のデータが誤って変更されないように)。 – Sercho
VBAにコピーして貼り付け、 "Set Main_Fold = FSO.GetFolder ..."という行のフォルダの場所をメインフォルダに変更してから、F8キーを使用してコードをステップ実行し、文字通り何が表示されるかを確認することをお勧めしますそれは... VBAの仕組みとできることを学ぶ最も良い方法です。 – Sercho