[ADO]ACCESSとExcelを接続する時の範囲の指定方法

#設定 / Settings
F:\test.xlsx の 一覧 シート の test（A1:D4) という名前の範囲を作ったとします。

#AccessVBA Code
```vbnet:ExceltoAccess
Option Compare Database
Option Explicit
Const Prov12_AC2010 = "Provider = Microsoft.ACE.OLEDB.12.0;Data Source="
Const Prov15_AC2013 = "Provider = Microsoft.ACE.OLEDB.15.0;Data Source="
Const Prov16_AC2016 = "Provider = Microsoft.ACE.OLEDB.16.0;Data Source="
Const Excel_xlsb = "EXCEL 12.0"
Const Excel_xlsx = "EXCEL 12.0 Xml"
Const Excel_xlsm = "Excel 12.0 Macro"
Const Excel_97xls = "Excel 8.0"
Const Excel_95xls = "Excel 5.0"
'\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access Connectivity Engine\ISAM Formats\


Const HeaderThru_True = "HDR = YES"
Const HeaderThru_False = "HDR = NO"

Const FN = "F:\My Documents\KEN_ALL.xlsm"
Const SN = "Sheet1"

Sub ExceltoAccess()
Dim db As Database: Set db = CurrentDb
Dim adRS As ADODB.Recordset
Dim CN As ADODB.Connection
Dim tdf As TableDef: Set tdf = db.TableDefs("一覧")
Dim RST As Recordset: Set RST = db.OpenRecordset(tdf.Name)
Dim varVer As Long
Dim i As Long
Set CN = New ADODB.Connection
'VersionよるOLEDｂの切り替え 説ぞ文字列の決定
varVer = int(Application.Version)
Select Case varVer
Case Is = 15
CN.Open (Prov15_AC2013 & FN & ";Extended Properties=""Excel 12.0 XML;HDR=YES;IMEX=1;"";")
Case Is = 16
CN.ConnectionString = Prov16_AC2016 & FN & ";Extended Properties=""" & Excel_xlsm & ";HDR= YES;"";"
Case Else
CN.ConnectionString = Prov12_AC2010 & FN & ";Extended Properties=""Excel 12.0 XML;HDR=YES"";"
End Select
CN.Open
Set adRS = New ADODB.Recordset
adRS.Open "Select * From [" & SN & "$];", CN, adOpenDynamic, adLockReadOnly
adRS.MoveFirst
Do While adRS.EOF = False
RST.AddNew
For i = 0 To adRS.Fields.Count - 1
RST.Fields(i).Value = adRS.Fields(i).Value
Next
RST.Update
adRS.MoveNext
Loop
adRS.Close
RST.Close
CN.Close
Set adRS = Nothing
Set RST = Nothing
Set CN = Nothing
End Sub

```



#Excelの範囲の指定方法
##「一覧」シートのA1:D4
adRs.Open "SELECT * FROM [一覧$A1:D4];", Cn, adOpenDynamic

##「一覧シート」全部
adRs.Open "SELECT * FROM [一覧$];", Cn, adOpenDynamic

##「一覧」シートのうち、「一覧」という名前を付けた範囲
adRs.Open "SELECT * FROM [一覧];", Cn, adOpenDynamic


#接続文字列
データベースやデータソースに接続するための接続文字列を指定する
'myCon.Open ConnectionString:=myString
'データソース内のテーブルを開く「ADODB.Recordset.Open」メソッド
[ADO列挙定数 Recordset CursorTypeEnum](https://msdn.microsoft.com/ja-jp/library/cc389787.aspx)

|定数                   |値 |説明 |
|:--------------------:|:-:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|adOpenDynamic | 2 |動的カーソルを使います。ほかのユーザーによる追加、変更、および削除を確認できます。プロバイダがブックマークをサポートしていない場合を除き、Recordset 内でのすべての動作を許可します。 |
|adOpenForwardOnly | 0 |既定値です。前方専用カーソルを使います。レコードのスクロール方向が前方向に限定されていることを除き、静的カーソルと同じ働きをします。Recordset のスクロールが 1 回だけで十分な場合は、これによってパフォーマンスを向上できます。 |
|adOpenKeyset | 1 |キーセット カーソルを使います。ほかのユーザーが追加したレコードは表示できない点を除き、動的カーソルと同じく、自分の Recordset からほかのユーザーが削除したレコードはアクセスできません。ほかのユーザーが変更したデータは表示できます。 |
|adOpenStatic | 3 |キーセット カーソルを開きます。データの検索またはレポートの作成に使用するための、レコードの静的コピーです。ほかのユーザーによる追加、変更、または削除は表示されません。 |
|adOpenUnspecified |-1 |カーソルの種類を指定しません。 |

[ADO プログラマーズ リファレンス >ADO API リファレンス > ADO 列挙定数 LockTypeEnum](https://msdn.microsoft.com/ja-jp/library/cc389829.aspx)
編集時にレコードに適用されるロックの種類を表します。

|定数 |値 |説明 |
|:--------------------:|:-:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 
|adLockBatchOptimistic | 4   |共有的バッチ更新を示します。バッチ更新モードの場合にのみ指定できます。 |
|adLockOptimistic      | 3   |レコード単位の共有的ロックを示します。Update メソッドを呼び出した場合にのみ、プロバイダは共有的ロックを使ってレコードをロックします。 |
|adLockPessimistic     | 2   |レコード単位の排他的ロックを示します。プロバイダは、レコードを確実に編集するための措置を行います。通常は、編集直後のデータ ソースでレコードをロックします。 |
|adLockReadOnly        | 1    |読み取り専用のレコードを示します。データの変更はできません。 |
|adLockUnspecified     | -1   |ロックの種類を指定しません。クローンの場合、複製元と同じロックの種類が適用されます。 |

[ADO プログラマーズ リファレンス >ADO API リファレンス > ADO 列挙定数 ](https://msdn.microsoft.com/ja-jp/library/cc389782.aspx)
カーソル サービスの場所を表します。

|定数 |値 |説明 |
|:--------------------:|:-:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|adUseClient | 3 |ローカル カーソル ライブラリより提供されたクライアント側カーソルを使います。ローカル カーソル サービスにはドライバによって提供されるカーソルよりも多くのカーソル機能があるので、この設定を利用すればより高度な機能を提供できます。以前のバージョンとの互換性を保つために、同じ意味を持つ adUseClientBatch もサポートしています。 |
|adUseNone | 1 |カーソル サービスを使いません。(この定数は現行バージョン用ではなく、以前のバージョンとの互換性を保つために装備されています。) |
|adUseServer | 2 |既定値です。データ プロバイダ カーソルまたはドライバによって供給されるカーソルを使用します。これらのカーソルは、多くの場合柔軟性が高く、ほかのユーザーが行うデータ ソースへの変更を検出できます。ただし、「Microsoft Cursor Service for OLE DB」にはサーバー側カーソルではシミュレートできない機能 (独立した Recordset オブジェクトなど) があり、そのような機能はこの設定では利用できません。|

[ADO プログラマーズ リファレンス >ADO API リファレンス > ADO 列挙定数 PositonEnum](https://msdn.microsoft.com/ja-jp/library/cc389855.aspx)
[Excelの接続文字列一覧 英語](https://www.connectionstrings.com/excel/)
[ADO.NETでExcelファイルに接続する Qiita](http://qiita.com/unarist/items/6cc35bb9fe502ced332f)

###Microsoft Excel 97 または 2000 ワークシートを開く方法
[Microsoft Jet 4.0 OLE DB プロバイダを使用して他のデータベース ファイル形式を開く](https://msdn.microsoft.com/ja-jp/library/cc376626.aspx)
次のプロシージャでは、Microsoft Excel 97 または 2000 ワークシートを開く方法を示します。
Jet 4.0 OLE DB プロバイダを読み替えること

[リンクされたテーブルを作成する](https://msdn.microsoft.com/ja-jp/library/cc376276.aspx)

####Excel ブックをリンクさせる
Excel ワークシートを開く接続テキストの書式は次のようになります。
"identifier;DATABASE={drive:\ | FTP:// | HTTP://}path\filename.xls [;HDR={Yes | No}]"
####HTML の表をリンクさせる
"HTML Import;DATABASE={drive:\ | FTP:// | HTTP://}path\filename [;HDR={Yes | No}]"
####Outlook/Exchange フォルダをリンクさせる

[インデックスを作成および修正する](https://msdn.microsoft.com/ja-jp/library/cc376284.aspx)
[接続文字列の構文(.NET Framework (current version)) - MSDN](https://msdn.microsoft.com/ja-jp/library/ms254500(v=vs.110).aspx)