Access(アクセス)のデータベース(テーブル)への連携についてです。

今までに。OutLookやIE等操作する方法を紹介してきました。

Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.Application")

と云った具合に、インストールされているアプリを変数に入れて使いました。

しかし、Accessが皆さんのパソコンにインストールされているとは限りません。

※私のパソコンにもAccessはインストールされていません。

つまり、VBAでAccessが使えないのです。

しかし、Windowsには、各種データベースへ接続する為の機能があります。

ADO 【 ActiveX Data Objects 】 です。

 dbCon As ADODB.Connection

Set dbCat = New ADOX.Catalog

と云った具合で使用します。

1、新しいブックを開く

2、1~3行目に

  

 を参考にシートを作成します。

3、4行目以下は適当にデータを入力

4、シート名を変更(仮 売上データ)

5、ファイルを名前を付けて保存(例 アクセス管理)

6、ボタンを配置、VBエディターで

Const cnsConnect1 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Const cnsConnect2 = ";Jet OLEDB:Engine Type=5;"
Public dbCon As ADODB.Connection
Sub ボタン1_Click()
Dim dbCat As Object
strMDB = ThisWorkbook.Path & "\" & Replace(ThisWorkbook.Name, "xlsm", "mdb")
MsgBox strMDB
strConnect = cnsConnect1 & strMDB & cnsConnect2
Set dbCat = New ADOX.Catalog
dbCat.Create strConnect
DoEvents
Set dbTbl = New ADOX.Table
dbTbl.Name = ThisWorkbook.ActiveSheet.Name
col = 1
Do While Cells(2, col).Value <> ""
If Cells(3, col).Value = "" Then
dbTbl.Columns.Append Cells(1, col).Value, Cells(2, col).Value
Else
dbTbl.Columns.Append Cells(1, col).Value, Cells(2, col).Value, Cells(3, col).Value
End If
col = col + 1
Loop
 dbCat.Tables.Append dbTbl
End Sub
 を張り付けて、閉じる。
5、ボタンをクリックする。
  同じフォルダ内に、名前は同じで、拡張子が mbd が作成されている事を確認
  これで、アクセスのデータベースが作成されました。
6、作成したデータベースの中に、シート名と同じ名前でテーブルが作成
  1行目の項目の名前で、フィールドが作成されている事を確認します。
  別途、新しいブックを開いて
  リボン データ=>左端の 外部データの取り込み、Accessデータベースを
  クリックして、ウィザードを実行する。
  データは空白ですが、フィールドが作成されているのが確認できれば成功です。
  確認が出来たら、閉じて下さい。(特に使いませんので保存しなくても結構です)
 
コードの説明は省略します。1~3行目に入力した内容について
1行目は、テーブルの フィールド名に使用しました。
2行目が フィールドの型です。
 2    SmallInt -32,768 ~ 32,767 の整数値。
 3    Integer  -2,147,483,648 ~ 2,147,483,647 の整数値。
 7    Date   日付型
 202  Text   文字型(最大文字数を設定する必要があります)
3行目に、文字型の場合の、最大文字数を入れてあります。
テーブルには、データを入力する為のフィールドを作成
フィールドには、名前、型を設定する必要があります。(文字列の場合は、最大文字数も)
今回は、ここまでのシンプルなテーブルで実験します。
実際にAccessでテーブルを作成して運用となると
フィールドに、主キーの設定、重複の有無
複数のテーブル同士のリレーションの設定などを駆使することになりますが
ここでは、割愛します。
このファイルも次に使用しますので、保存しておいてください。