goo blog サービス終了のお知らせ 

へたれ社内VBAプログラマー実験室

物忘れ防止に無秩序に探したコード、書いてみたコードをおもにAccess中心に貼り付けてます。利用は自己責任でよろ。

【VBA】ExcelからAccess を操作??

2015年08月31日 18時24分07秒 | Weblog
Accessって煩わしいよね・・・って拒否感示す人いますよね?

だったら、Excelで操作画面作っちゃえ!!の発想です。

特定セルに条件をいれて、エクセル上にボタンを作成し、クリックでAccessの処理を実行します。

途中で落ちたりするとプロセスがのこっちゃう処理を考えなきゃいけんです・・
あと、エラー処理も・・・

'-----------------------------------------------------------------------------------------
Sub 集計を開始する_Click()
'参照設定:[Microsoft Access 9.0 ObjectLibrary]

'セルにはそれぞれ、名称を設定しています。
Range("処理状況").Value = "処理を実行中です。"

Dim AccessTG As String '操作するAccessファイル
AccessTG = Range("対象フォルダ").Value & "\" & Range("アクセスデータ").Value

Dim TG_CSV As String 'Sub中で使う変数
TG_CSV = Range("対象ファイル").Value

Dim rc As Integer
rc = MsgBox("集計処理を行いますか?", vbYesNo + vbQuestion, "確認")
If rc = vbYes Then

'-------------------------------------------------------------
' ↓処理↓
'-------------------------------------------------------------

Dim objACCESS As Object

Set objACCESS = CreateObject("Access.Application")
objACCESS.OpenCurrentDatabase AccessTG

With objACCESS

.Visible = False    'Accessを非表示
.UserControl = False  'Accessのユーザ操作なし

'処理の変化に併せてセル内容を変更も可能
Range("処理状況").Value = "データ取得中"

      "call csv_import (CSVファイル,テーブル名)は .Runで次のようになる。
.Run "csv_import", TG_CSV, "TBL_UIM_data"

Range("処理状況").Value = "各種処理クエリ実行中"

'クエリーを実行する場合は次の通り
.DoCmd.OpenQuery "クエリー名"

'.hogehogeでAccess VBA同様の構文が書くことができる。

.Visible = True
.UserControl = True

.Quit '起こしたら終了

End With
Set objACCESS = Nothing


MsgBox "集計処理が完了しました"

'-------------------------------------------------------------
' ↑処理↑
'-------------------------------------------------------------

Range("処理状況").Value = "集計処理を実行しました。"
Exit Sub


Else
MsgBox "処理を中断します"
Range("処理状況").Value = "集計処理を中断しました。"

Exit Sub

End If

End Sub

'-----------------------------------------------------------------------------------------

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 【Access 】【VBA】SQLチェッ... | トップ | 【Access】【VBA】テーブルの... »
最新の画像もっと見る

Weblog」カテゴリの最新記事