VBScriptsでAccess2000のインストール状態を調べようとしています。
実行した環境は、以下です。
環境(1)
WinXP
ACCESS2000
ACCESS2010Runtime
作成したコードは以下です。
------------------------
Dim objAcc
Dim AccVer
On Error Resume Next
Set objAcc = CreateObject("Access.Application")
If Err.Number = 0 Then
AccVer =objAcc.Version
Select Case AccVer
Case 9
WScript.Echo "ご利用のPCにはAccess2000がインストールされています。"
Case 14
WScript.Echo "ご利用のPCにはAccess2010がインストールされています。"
End Select
Else
WScript.Echo "Access はインストールされていません"
End If
-----------------------------
実行をすると、"Access はインストールされていません"とメッセージが出て、
ACCESS2000のインストールを認識していません。
CreateObject("Access.Application")をCreateObject("Access.Application.9")
に変更しても同じ結果でした。
他の環境でも確認しましたが、以下の結果でした。
環境(2)
WinXP
ACCESS2010
⇒"ご利用のPCにはAccess2010がインストールされています。"
環境(3)
WinXP
ACCESS2010Rintime
⇒"Access はインストールされていません。"
ただ、実際に確認が必要になるのは、環境(1)の状態でのAccess2000のインストール有無です。
上記の現象について情報をお持ちの方、または他に良い方法をご存知の方がおりましたら
ご連絡を頂ければと思います。
No.1ベストアンサー
- 回答日時:
RunTime 関連は?ですけどCドライブ中のMSACCESS.EXEのバージョンなら
Dim oSH
Dim oFS
Dim oFLD
Dim oF
Dim j
Dim sMsg
Dim infoIndex 'XP の場合は39?
Dim strComputer
Dim objWMIService
Dim colFiles
Dim FCol
Dim sSql
sSql = "SELECT * FROM CIM_DataFile " _
& " WHERE Drive = 'C:'" _
& " AND FileName = 'MSACCESS'" _
& " AND Extension = 'EXE'"
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery(sSql)
Set oSH = CreateObject("Shell.Application")
Set oFS = CreateObject("Scripting.FileSystemObject")
infoIndex = 39
For Each FCol In colFiles
Set oF = oFS.GetFile(FCol.Name)
Set oFLD = oSH.Namespace(oF.ParentFolder.Path)
j = j + 1
sMsg = sMsg & j & "," & FCol.Filename _
& "," & FCol.Name _
& "," & oFLD.GetDetailsOf(oFLD.Items, infoIndex) _
& "," & oFLD.GetDetailsOf(oFLD.ParseName(oF.Name), infoIndex) _
& Chr(13) & Chr(10)
Set oF = Nothing
Set oFLD = Nothing
Next
MsgBox sMsg
のVBSで出来るかと思います。Cドライブのファイルを総なめしてるので遅いです。
製品バージョン番号の辺りはそちらの状況に合わせて加工してください。
ここの掲示板はTabインデントが利かないので見辛いでしょうが勘弁。
なお、ExcelかAccessのVBEにて
Sub TEST()
ここに上記コードを張り付けて色々やって見てください。
End Sub
No.2
- 回答日時:
Web検索を行ったところ、Access RuntimeでCreateObjectできないという例が少数ですが見つかりました。
おそらく質問者様のケースにも当てはまるのではないでしょうか。
解決できた例としては、「始めにShellからMSACCESS.EXEとmdbを起動してから、CreateObjectではなくGetObjectを使用」というのがありました。
http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi? …
しかしそれ以上の詳しい説明がありませんでした。
そこでGetObjectの実験をしてみました。
ただし、当方のPCにはOffice2000PremiumのAccessのみがインストールされおりRuntimeはなく、加えてOffice2003Standardがインストールされているという状況ですのでそこのところはご承知置きください。
その結果、次のようなコードでGetObjectと終了についてはうまく動作しました
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("C:\Program Files\Microsoft Office\Office\MSACCESS.EXE /nostartup")
on error resume next
counter=0
do
Err.Clear
wscript.sleep 500
set oOfficeApp=getobject(, "Access.Application")
counter=counter+1
loop until (err.number = 0) or (counter > 20)
en = Err.Number
on error goto 0
'OfficeVer = oOfficeApp.Version 'エラーが出るのでコメントアウトした
'wscript.echo Officever
oofficeapp.quit()
wscript.echo en & " " & counter
しかし、上記コートのコメントにも書いたとおりなぜかVersionプロパティを得ようとするとエラーが出ます。
下記のようにCreateObjectでもだめで、一方Excel2003ではOKなので
もしかしたら当方のAccess2000に異常があるのかもしれません。
set oOfficeApp=createobject("Access.Application")
oOfficeApp.visible=true 'エラーによる停止でも手動で終了できるように
OfficeVer = oOfficeApp.Version
wscript.echo Officever
oofficeapp.quit()
参考URL:http://hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi? …
おおっ!動作確認までしていただいたのですね。
ありがとうございます。
結局、対応したのはNo1ご回答頂いた方のコードから
oFLD.GetDetailsOf(oFLD.ParseName(oF.Name), infoIndex)
バージョン情報を引っ張って、先頭文字が”9.”をもっていたら2000と判定させる動きにしました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL データベースの複製の仕方(mysql) 2 2023/05/30 18:24
- Visual Basic(VBA) Access VBAから使用したExcelプロセスを閉じる方法について 4 2022/06/08 17:50
- 画像編集・動画編集・音楽編集 Native Accessのインストールが先に進みません 2 2022/09/14 13:34
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Access(アクセス) Microsoft Accessをクレジットカード登録無しで試用したい 3 2023/07/20 17:28
- ソフトウェア 移行PCにDockerがインストールされていても各種開発環境のアプリはインストールが必要? 2 2023/05/21 21:53
- JavaScript jQueryローディングアニメーションのコードの以下のURL内参考サイトで提示されている 3 2023/07/03 18:29
- Windows 10 UEFIのPCにWindows7をインストールしてVirtualPC2007を使用する。 5 2022/12/10 11:01
- Excel(エクセル) excel2003でxlsxファイルを更新したい 6 2023/01/31 15:15
- Mac OS El Capitanがインストールできない… 1 2023/06/16 13:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseのアンインストールの仕方
-
vs codeはオフラインでも使用で...
-
MSDNのコレクションがありませ...
-
ActivePerlをインストールしよ...
-
この <windows.h> はどこに在る...
-
NuGetのインストール
-
ワードプレスで、特定の記事の...
-
IISってインストールしただけで...
-
マイクラjavaでForgeを入れたい...
-
Javaをインストールしたんです...
-
セットアップファイル(MSIとEX...
-
VBSでuser32.dll(Win32API)を...
-
JfreeChartのインストール
-
eclipseでのJSPのエディタ
-
Visual Basic 6.0のインストー...
-
「あなたの予想に反して、この...
-
ActobatReader無しでPDFを表示
-
NET Framework 4 v4.0.30319 ダ...
-
ヘルプの日本語化の方法
-
64bitでbasp21の使用方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Eclipseのアンインストールの仕方
-
マイクラjavaでForgeを入れたい...
-
vs codeはオフラインでも使用で...
-
ActivePerlをインストールしよ...
-
この <windows.h> はどこに在る...
-
MSDNのコレクションがありませ...
-
ワードプレスで、特定の記事の...
-
セットアップファイル(MSIとEX...
-
Javaをインストールしたんです...
-
OptiFineをJAVAで開こうとする...
-
ユーザー名を漢字で登録してし...
-
MATLABのtoolboxのインストール...
-
Jupyter Notebook の拡張機能(N...
-
windows7 ADTプラグイン追加で...
-
64bitでbasp21の使用方法
-
VBSでuser32.dll(Win32API)を...
-
JDKでJavaアプリケーション実行...
-
IEの印刷機能を制御して印刷設...
-
OO4Oのインストールのしかた
-
stdoleについて
おすすめ情報