単一のセル値に基づいてインデックス付けされた何千ものエクセル(2016)シートが必要です。ワークブックにはワークシートが1つしかなく、データは常にセルD2に存在します。VBA:1セルからマスター
2番目の列のマスターファイルにD2をコピーし、最初に関連するファイルの名前を付けたいとします。 個々のExcelファイルは既にサブフォルダに分割されています。
私は一般的にコーディングには新しいので、物事を段階的に説明することができればボーナスポイントになります。私はフォローして学びたい。
先進的なサポートをいただきありがとうございます!
編集:私は前にシートを有効にしなかった
もの、他のブックを起動し、その後、ファイルを変更しました。私は他のワークシートを活性化していないので、私は次に何をするのかと迷っています。ただ彼らからデータを取り出すだけです。彼らは開かれる必要はありません。
ループはファイルを呼び出す必要があります。 次に、範囲を選択>コピー>呼び出しマスタファイル>有効化>貼り付け>行数を1に設定して、選択したセルをシフトダウンしてください>
ただし、名前がないので先行するセルの名前を、そのファイルのファイル名から取り出したいとします。これに関するヘルプを検索すると、ファイル名またはパスの後にワークシート内のセルに名前を付ける方法、それを逆にしたい場所、毎回変わる別のソースから名前を付ける方法しか得られません。ループへ
コード:
Option Explicit
Sub deeploop()
Dim objFSO As Object
Dim objFolder As Object
Dim objSubFolder As Object
Dim objFile As Object
Dim MyFolder As String
Dim wkbOpen As Workbook
Dim wkb As Workbook
Dim wks As Worksheet
Dim CalcMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
'Change path
MyFolder = "C:\Path"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(MyFolder)
Set wkb = ActiveWorkbook
Set wks = ActiveSheet
For Each objSubFolder In objFolder.SubFolders
For Each objFile In objSubFolder.Files
Set wkbOpen = Workbooks.Open(objFile.Path)
'code
wkbOpen.Close savechanges:=True
Next objFile
Next objSubFolder
With Application
.Calculation = CalcMode
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
学習は、検索エンジ例での検索から始まるVBAまたはコピーする方法マクロをエクセル... – 0m3r
は、私はすでに検索をたくさんやりました。私はすでにループを行うことができるコードを持っていますが、個々のパーツをどのようにまとめるのか分からないので、私はそれを聞くのが最善であると思ったのです。 – Whistler
コードを書き留めて、どの部分に問題があるか教えてください。 – 0m3r