AccessとExcelの連携パート3【登録されているデータを修正する】

ExcelとAccessの連携



The following two tabs change content below.
アバター

taka

あることがキッカケでVBAを独学で勉強しました、今ではブログを通してVBAでできることを解説しつつ、VBAや他の言語の勉強、ブログ運営の勉強をしています(^^♪

AccessとExcelの連携パート3【登録されているデータを修正する】

このブログの一番人気のシリーズでもある、待ちに待ったAccessとExcel VBAの連携シリーズパート3です!

今までExcelにAccessのデータを読み込む、そしてExcelからAccessにデータを追加する事をご紹介しました、今回はそのデータを修正するコードをご紹介します。

 AccessとExcelの連携パート1AccessとExcelを連携する意味AccessとExcelを連携する意味、それはExcelの限界にあります。Excelは表演算ソフトですデータベースではありません...
AccessとExcelの連携パート2実際にプログラムを作ってみる前回はAccessのデータベースを読み込むコードを掲載しました、前回のプログラムを利用して実際に使えるAccess...

 

修正フォームを作ってみよう

ずは修正フォームの作成していきます。今回は前回の続きなので構成は同じにしておきたいと思います。

とりあえず

  • TextBox×項目数分
  • 修正用のボタン

今回もこの二つをもとに作成します。

前回と違う点はIDを入れるTextBoxが増えているところです。

修正フォームの流れ

今回のプログラムの流れはこのようになります。

  1. DB(データベース)に接続
  2. IDをもとにデータが存在するかを確認、IDが存在する場合はTextBoxに現データを表示
  3. 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フォロー

■YouTubeチャンネル登録

ファイルやコードの利用、WEBサイトの利用について

サンプルコードなどは当サイトの免責事項をよくお読みになってからお使いください。

Sponsored Link

 

WordPressでブログを始めるなら

WordPress簡単インストール&安心の安定性

レンタルサーバー Xserver

ExcelとAccessの連携

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です