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
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
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でテーブルを作成して運用となると
フィールドに、主キーの設定、重複の有無
複数のテーブル同士のリレーションの設定などを駆使することになりますが
ここでは、割愛します。
このファイルも次に使用しますので、保存しておいてください。