質問: adoRS.Fields("フィールド名").value objDic.Add iClmNo, strFldNm 'チェック '--カラム数が足りない場合エラー If iClmMxNo < iClmNo Then GoTo Err_Expected '--カラム位置が違う場合エラー If adoRsXls.Fields(iClmNo).Name <> adoRS.Fields("フィールド名").value Then GoTo Err_Expected adoRS.MoveNext Loop
回答: ADOでエクセルをセル範囲指定して開いたときに、フィールド名を取得できないということですが、提示のコードは、肝心の部分が省略されていたり、質問の内容と関係ない部分がありますので、取りあえず、フィールド名を取得できるかどうかの検証用コードを提示しておきます。質問のコードからADOでエクセルを開く部分のみ抜き出して、ファイル名はこちらで用意したものに差し替えました。 ``` Public Sub AdoExlsImportTest() Dim adoDBXls As ADODB.Connection 'Excelファイル接続用 Dim adoRsXls As ADODB.Recordset Dim strConStr As String Dim strSQL As String Dim strFilePath As String strFilePath = "C:\TEST\ADOTest.xlsx" '取得元のExcelファイルに接続 Set adoDBXls = New ADODB.Connection strConStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strFilePath & _ ";Extended Properties=""Excel 12.0 Xml;HDR=YES;IMEX=1;]"";" adoDBXls.Open strConStr strSQL = "SELECT * FROM [Sheet1$A5:D];" Set adoRsXls = adoDBXls.Execute(strSQL) 'フィールド名の取得 Dim iClmNo As Long For iClmNo = 0 To adoRsXls.Fields.Count - 1 Debug.Print adoRsXls.Fields(iClmNo).Name Next adoRsXls.Close: Set adoRsXls = Nothing adoDBXls.Close: Set adoDBXls = Nothing End Sub ``` 検証用エクセルファイル ![検証用エクセルファイル 実行結果キャプチャ !実行結果のキャプチャ 問題なくフィールド名は取得できるのが確認できると思います。 フィールド名の確認方法が間違っているとかでないでしょうか。 あるいは、フィールド名が不適切な可能性もあるかも。 Access データベースでの作業時に使用すべきでない特殊文字