Excelファイル内の特定の変数を特定する必要があるユーザーと協力しています。現在、私が働いている人には、Excel文書が入っているフォルダやサブフォルダがたくさんあります。彼はフォルダ内でサブフォルダを探すVBAコードを使用しているので、パスウェイを返し、サブフォルダへのハイパーリンクを作成します(これは以下のVBAコードの一部ではありません)。 、メインフォルダ内のサブフォルダのレベルにかかわらず。VBAを使用してExcelファイルから列ヘッダーを取得する
は、ここでは、コードです:
Sub GetFolders()
Dim path As String
Dim folder As String
Dim row As Integer
path = "your directory here"
folder = Dir(path, vbDirectory)
row = 1
Do While folder <> ""
If (GetAttr(path & folder) And vbDirectory) = vbDirectory Then
Cells(row, 1) = path & folder
row = row + 1
End If
folder = Dir()
Loop
End Sub
これは素晴らしいですが、私はより良い方法がなければならない知っています。どのようにして、このコードを操作して、フォルダ内に含まれるサブフォルダ内のA)またはB)内にある任意のExcelファイルのCOLUMN HEADERSを返すことができます。私はこれらをExcelスプレッドシートに戻して、100を超えるExcel文書を開く必要はなく、これだけを開いて、さらに調査が必要なExcelスプレッドシートを特定し、残りの部分を無視できるようにします。
ループを展開し、見つかった各ブックを開くのは比較的簡単です。あなたがしなければならない決定は次の通りです。a)ブック内の列ヘッダーはどこですか?1枚、複数枚、すべてのシート? b)これらのシートのそれぞれにあるヘッダー(行1または他の行)はどの行ですか?確かに可能です...これらのアイデアの周りを検索し、いくつかのコードをまとめて、戻って来て、あなたが何をしたのかについていくつか質問してください。 – PeterT
これをAccess DBにする方が良いかもしれないようです。これはExcelが実際に構築しているものではありません。つまり、特定のヘッダーを取得するためにすべての処理を行わなければならない理由を見つけ出すと、より良い解決策が見つかるでしょう。例:列がファイルごとに同じでない場合は、フォルダの場所からパターンを見つけることができますか?一部のファイルで列を標準化して空白にすることはできますか? – TesseractE
Excel 2010以降では、Excelクエリを使用して、Excelのファイルを開くことなくExcelの列見出しを照会することができます。 – Slai