質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

Q&A

解決済

2回答

18271閲覧

ランタイム版AccessマクロVBSバッチからの実行方法

doremifa

総合スコア33

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

0グッド

0クリップ

投稿2017/01/16 00:50

編集2017/01/17 04:53

###前提・実現したいこと
VBSバッチからaccessマクロを実行したい。

###発生している問題・エラーメッセージ
開発環境にはaccess2013がインストールされていたため
createObjectで実行できたが、実際に動かしたい環境にはインストールさえていないため
ランタイム版のAccessをインストールするもCreateObjectがエラーになります。

###開発状態で動作したもの(ランタイムでは動かない)

Dim AcApp Set AcApp = CreateObject("Access.Application") AcApp.OpenCurrentDatabase FileFullPath select case AcApp.Run ("Macro")

###試したこと
マイクロソフトの以下によるとランタイム版を一度オープンしてgetObjectすればよいとのことですが
サイトの情報が古いようで拡張子も異なっており
オープン文をどのように変更すればよいかわからないでいます。
(拡張子はaccdbですし、system.mdwというファイルも見当たりません)
https://support.microsoft.com/ja-jp/kb/145707

###補足情報(言語/FW/ツール等のバージョンなど)
開発:access2013
ランタイム:access2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

手元にRuntime環境がないのでRuntime版での動作は未検証ですが、以下のような流れでできるのではないかと思います。

Dim objShell Set objShell = CreateObject( "WScript.Shell" ) Dim strFileFullPath strFileFullPath = "C:\test.accdb" 'Access起動 objShell.Run strFileFullPath '& " /Runtime" 'Accessオブジェクトの取得 Dim AcApp Set AcApp = GetObject(strFileFullPath) If AcApp is Nothing Then Msgbox "Get NG" WScript.Quit End If 'VBAマクロ実行 AcApp.Run "Macro" AcApp.Quit Set AcApp = Nothing

ちなみに私の環境ではAccess起動の部分でMDBをShell起動しなくても、GetObjectだけで対象のMDBファイルが開かれるようでした。
このため上記コードをそのまま実行すると、目的のMDBファイルがShell起動とGetObjectで2重に開かれてしまいました。
処理終了時のAcApp.QuitではGetObjectで開かれたMDBのみ閉じており、Shell起動のMDBはそのまま残ってしまうため、Shell起動部分をコメントアウトすることで正常動作となりました。

当方の環境は正規版Accessのため参考にはならないかもしれませんが、一応の動作報告です。
参考になれば幸いです。

投稿2017/01/18 06:15

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doremifa

2017/01/22 23:46

ご教示いただいた方法で解決することができました。 ありがとうございました。
guest

0

こんにちは。MS-Access のランタイムが無償配布されているとは知りませんでした。
こちらの情報によると

http://www.naboki.net/access/heaven/heaven-01.html

「ランタイム環境では Access をCreateObjectできない」

Access ランタイム環境では msaccess.exe だけを起動することはできませんので、CreateObject してもエラーになってしまいます。起動したい mdb を指定して、GetObjectで対応しましょう。

OLE で Access を使おうと思ってる人は、必ずランタイム環境でのテストを充分行うことをお勧めします。

のようです。お役に立てば幸甚です。

投稿2017/01/17 07:37

hsk

総合スコア728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

doremifa

2017/01/22 23:45

情報ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問