「TransferSpreadsheet」のインポート処理で取込開始位置を指定する

情報・セキュリティ

以下はAccessVBAの処理で指定したExcelファイルの中の特定のシートからデータを取り込む際に
取込開始位置を指定する方法。

[DoCmd.TransferSpreadsheet メソッド]
TransferSpreadsheet (TransferType, SpreadsheetType, TableName, FileName, HasFieldNames, Range, UseOA)
参考URL:https://msdn.microsoft.com/ja-jp/vba/access-vba/articles/docmd-transferspreadsheet-method-access

[例:指定シートのA3~Z1000の範囲を取り込む場合]

DoCmd.TransferSpreadsheet acImport, _
, _
"インポート先テーブル名", _
"取込ファイル名(フルパス)", _
True, _
"シート名!A3:Z1000"

※SpreadsheetTypeは省略しています。

A3~Z3にヘッダがインポート先テーブルの構成と同じなら
A3~Z1000までのデータをサクっと取り込んでくれます。

ちなみに、A1からヘッダが始まっている場合はシート名のみの設定で取り込めます。

データ型もExcel側のデータがおかしくなければすんなり通るけど、
不明な場合はAccess側は全部文字列で取り込んでクエリ作成でデータ型を変換したクエリを作るのも一つの手かと。

あんまり良い方法とは言えないですね・・・

おわり。

コメント