フォームが使いやすく思わぬところで利点があるのです。
おつかれさまです。なずなです。
Accessというよりデータベースって結構難しいんです。
フォームだけでも最初に使ってみましょう。
今回の完成品
Sub 対象ブックのA1に書き込む() ' Windows Excel xx.0 Object Libraryの参照設定をしてください。 Dim xls As Excel.Application 'Excelを開いていないとエラーになります。 Set xls = GetObject(, "Excel.Application") Dim bk As Workbook '対象のブックしか開いていない前提 Set bk = xls.Workbooks(1) bk.Worksheets(1).Range("A1").Value = "Accessから入力" End Sub
注目のポイント
GetObjectというやつ
すでに開いているオブジェクトをクラス名を指定して
取得する命令です。
よくわたしはこれとCreateObjectをあわせて
オブジェクトをつかむって表現してます。
オブジェクトを変数で捉えることで初めて操作ができるのです。
このときのクラス名は覚えるだけです。がんばりましょう。
Access準備の手順
今回は普通に手順をのせてみます。
バージョンが違うと少し違うかも。知ってる人は飛ばしてね。
Accessのファイルを作成して開きます。
初期画面から作成をクリック
空白のフォームをクリック
開いたフォームで右クリック。デザインビューをクリック
デザインタブのボタンをクリック
ドラッグでボタンを設置。ウィンドウが表示されるのでキャンセル
ボタンを右クリック。イベントのビルドをクリック
コードビルダーを選択してOKをクリック
VBEがひらきます。あとで作成するプロシージャ名「サンプル」を呼び出すように入力します。
挿入>標準モジュールで作成します。
フォームウィンドウに戻って「Ctrl + S」で保存。フォーム名は任意でOKを押します。
フォームウィンドウに戻って「Ctrl + S」で保存。フォーム名は任意でOKを押します。
タブのところで右クリック。フォームビューをクリック。
ボタンを押すとプロシージャが実行。メッセージボックスが表示されます。
プロシージャを作成。
Sub 対象ブックのA1に書き込む() ' Windows Excel xx.0 Object Libraryの参照設定をしてください。 Dim xls As Excel.Application 'Excelを開いていないとエラーになります。 Set xls = GetObject(, "Excel.Application") Dim bk As Workbook '対象のブックしか開いていない前提 Set bk = xls.Workbooks(1) bk.Worksheets(1).Range("A1").Value = "Accessから入力" End Sub
Set bk = xls.Workbooks(1)
こいつに慣れてほしいです。
オブジェクトとしてブックをつかんでしまえば、あとは
普段のVBAと一緒です。
作ったプロシージャを呼びだすように変更。
Private Sub コマンド0_Click() Call 対象ブックのA1に書き込む End Sub
VBEの左上。フォームのところをクリックで画面を開きます。
そこを修正。
Private Sub コマンド0_Click() Call 対象ブックのA1に書き込む End Sub
これでボタンを押したらExcel側へ書き込むようになります。
思ったより長かったので今回はここまで。
乗せ換えるのは次回に回しまーす。