Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2016)
エクセル取込を2行目以降に指定したい
投稿日時: 20/05/13 11:58:50
投稿者: aomi

いつもお世話になっております。
 
エクセルを取り込む際にA2:Jを指定して取り込みたいと思っていますが、下記のエラーメッセージが表示されます。
取り込む先のテーブルには別のフィールド名が指定してあるのですが、フィールド名は「F1、F2」などでないと取り込むことはできないのでしょうか?
 
________________________________________________
    Dim Path As String
    Dim Res As String
    WizHook.Key = 51488399
     
     
    Res = WizHook.GetFileName(0, "", "", "", Path, "CurrentProject.Path", "(*.xlsx,*.xls)", 0, 0, 4, -1)
     
        If Res = 0 Then
        '取得したファイルパス(Path)でExcelからインポート
        DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_Customer", Path, False, "Sheet1$A2:I"
         
        Else
         
        '[キャンセル]ボタンが押された場合の処理
         MsgBox "[キャンセル]ボタンが押されました。"
        Exit Sub
         
        End If
         
         MsgBox "Customerマスタの更新処理が完了しました。"

回答
投稿日時: 20/05/13 12:50:13
投稿者: sk

類似記事:
https://www.moug.net/faq/viewtopic.php?t=78842
 

引用:
エクセルを取り込む際にA2:Jを指定して取り込みたい

・Excel ワークシート(セル範囲)の先頭の行を列見出しと見なして
 既存のテーブルへのインポートを行なう場合、
 インポート元となる Excel ワークシート(セル範囲)と
 インポート先となる Access のテーブルとの間において、
 各列/フィールドの名前は正確に一致していなければならない。
 
引用:
取り込む先のテーブルには別のフィールド名が指定してあるのですが、
フィールド名は「F1、F2」などでないと取り込むことはできないのでしょうか?

引用:
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_Customer", Path, False, "Sheet1$A2:I"

・Excel ワークシート(セル範囲)の先頭の行をデータ行と見なして
 既存のテーブルへのインポートを行なう場合、
 インポート先となる Access のテーブルにおいて、
 インポート元となる Excel ワークシート(セル範囲)の
 列と同じ数だけフィールドを定義し、かつそれらのフィールドには
 [F1], [F2], [F3] ... のように「"F" と列番号を組み合わせた名前」が
 つけられていなければならない。
  
Office サポート より:
https://support.office.com/ja-jp/article/excel-%E3%83%96%E3%83%83%E3%82%AF%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A8%E3%83%AA%E3%83%B3%E3%82%AF%E3%81%AE%E8%A8%AD%E5%AE%9A-a1952878-7c58-47b1-893d-e084913cc958

投稿日時: 20/05/13 18:35:20
投稿者: aomi

sk様
ご回答ありがとうございます。
理解できました。
 
以前にも投稿があったのですが、探したのですが見つけきれませんでした。