
taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
AccessとExcelの連携パート3【登録されているデータを修正する】
このブログの一番人気のシリーズでもある、待ちに待ったAccessとExcel VBAの連携シリーズパート3です!
今までExcelにAccessのデータを読み込む、そしてExcelからAccessにデータを追加する事をご紹介しました、今回はそのデータを修正するコードをご紹介します。
修正フォームを作ってみよう
ずは修正フォームの作成していきます。今回は前回の続きなので構成は同じにしておきたいと思います。
とりあえず
- TextBox×項目数分
- 修正用のボタン
今回もこの二つをもとに作成します。


前回と違う点はIDを入れるTextBoxが増えているところです。
修正フォームの流れ
今回のプログラムの流れはこのようになります。
- DB(データベース)に接続
- IDをもとにデータが存在するかを確認、IDが存在する場合はTextBoxに現データを表示
- TextBoxの値を変更し反映させる。
このような流れをそって作成していきたいと思います。
DB接続コード変更
では実際に使用するコードを紹介します、
※今までとはDB接続のパスの指定方法を変更します。時間があるときに今までの記事も改稿していきますのでしばらくお待ちください。
コードの解説はコメントとして書いてあるので参考にして下さい。
DB(データベース)に接続するコード
今回から可読性の向上の為Subプロシージャーを呼び出す方法に変更しようと思います。
Option Explicit Dim con As New ADODB.Connection Dim rs As New ADODB.Recordset Public Sub DB接続() 'データベース(DB)接続 Dim myWBPath As String Dim constr As String, pswd As String, pas As String Dim i As Long myWBPath = ActiveWorkbook.Path '←Excelファイルがあるパスを取得 pswd = "パスワード" '←Accessファイルををパスワード保護している場合は必要 pas = myWBPath & "\Access連携.accdb" '←Excelファイルが接続先のAccessファイルと同一階層にあると仮定 '----------データベースに接続------------- constr = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=" & pas & ";" & _ "Jet OLEDB:Database Password=" & pswd & ";" con.Open ConnectionString:=constr ' ↓テーブル名 rs.Open Source:="会員名簿", ActiveConnection:=con, _ CursorType:=adOpenKeyset, LockType:=adLockOptimistic '-------------------------------------- End Sub
IDをもとにデータが存在するかを確認、IDが存在する場合はTextBoxに現データを表示
続いてTextBox1(IDのBox)にIDを入力してIDが存在するのか、存在した場合TextBoxにデータを呼び出すコードをご紹介します。
Private Sub TextBox1_Change() If TextBox1.Value = "" Then Exit Sub End If Call DB接続 '接続コード呼び出し With rs .MoveFirst .Find criteria:="ID='" & TextBox1.Value & "'" If .EOF = True Then 'IDが存在するか確認 MsgBox "IDが見つかりませんでした" TextBox1.Value = "" rs.Close 'データベースを閉じる con.Close 'データベースを閉じる Exit Sub End If 'IDが見つかった場合はフォームにデータを表示 TextBox2.Value = .Fields("氏名").Value TextBox3.Value = .Fields("住所").Value End With rs.Close 'データベースを閉じる con.Close 'データベースを閉じる End Sub




TextBoxの値を変更し反映させるコード
最後に修正を反映させるコードです。
Private Sub CommandButton1_Click() If TextBox1.Value = "" Then MsgBox "IDを指定してください" Exit Sub End If Call DB接続 '接続コード呼び出し With rs .MoveFirst .Find criteria:="ID='" & TextBox1.Value & "'" If .EOF = True Then 'IDが存在するか確認 MsgBox "IDが見つかりませんでした" TextBox1.Value = "" Exit Sub End If 'IDが見つかった場合は変更処理 .Fields("氏名").Value = TextBox2.Value .Fields("住所").Value = TextBox3.Value .Update .MoveFirst End With MsgBox "変更しました" rs.Close 'データベースを閉じる con.Close 'データベースを閉じる End Sub
コード実行
実際コードを実行してみましょう。
ID:1
氏名:テスト1
住所:東京都
このデータを画像のように変更してみます。


実行後AccessのDB(データベース)を確認してみてください。変更できていれば成功です。


ダウンロード
上記のサンプルファイルをダウンロードできます。修正フォームは【UF2】です。
免責事項等をよく読みお使いください。
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す