#今回のテーマ
最適化/修復だけ行うショートカットの作り方
"c:\Program Files\Microsoft Office\Office10\MSACCESS.EXE" "c:\db1.mdb" /compact
デスクトップにこういうショートカットを作って最適化とありますが、MDB形式です。
ACCDB形式のファイルは最適化できるのか。またせっかくですから別名で最適化しましょう。
##Access 2013 32 bit
"C:\Program Files (x86)\Microsoft Office\Office15\MSACCESS.EXE" "C:\hoge\Distination.accdb" "C:\hoge\Source.accdb" /compact
'環境変数を使用
"%ProgramFiles(x86)%\Microsoft Office\Office15\MSACCESS.EXE" "C:\hoge\Distination.accdb" "C:\hoge\Source.accdb" /compact
###気が付いたこと
1.MSAccess.exeをフルパスでダブルクオーテーションで囲む そのあと半角スペース
2./compact オプションはexe" の次ではなく、最後にもってくる
3. ファイルのパスにスペースが含まれていない場合は引用符は必要ない。が一応つけるのがお約束。
4. 圧縮先 圧縮元の順 の順に各々ダブルクォーテーションで囲む。各ファイル名の間はスペース。コンマは不要。
5. パスワードつきは未確認
6. msaccess.exe /ro "c:\My Folder\My Database.accdb"
"c:\My Folder\My Database.accdb" /ro
Office Access 2007 では、"msaccess.exe" を省略し、ファイルの完全なパスからコマンドを始めることができます。たとえば、上のコマンドは次のように入力できるが、他に実行していたら失敗する。
#Access 2016 64 bit
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /compact "C:\hoge\Distination.accdb" "C:\hoge\Source.accdb"
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /compact "C:\hoge\Source.accdb"
1.64Bitだと実行ファイルのフォルダ名にRootになる
2.コマンドラインスイッチの位置が違う。最後に置くとエラーになる。2007 - 2013 までと異なるようだ。
3.別名に最適化することはたまにエラーになる。ファイル名、コマンドラインスィッチを全角スペースで区切るとエラーになるようだがよくわからなかった。
##Access 2016 32bit
How to launch Access 2016 from command line with access.exe?
MicrosoftのQAサイトでは
"C:\Program Files (x86)\Microsoft Office\Office16\MSACCESS.EXE"
になるようだ
#参考
Access のコマンド ライン スイッチ - Access 2007
Access 2013 コマンドライン スイッチを使って帳票を自動印刷する方法~起動後のマクロ実行
マクロを自動起動する例がある。しかしAccess2016はオプションスィッチの位置が異なる可能性がある。
Access 2010 のコマンド ラインスイッチに関するマイクロソフトの公式情報が知りたい
公式な情報という事でしたら、弊社のサポート窓口へお問い合わせいただいた方がよいかもしれません。
カスタマー インフォメーション センター
よろしくご検討くださいませ。
結論として現時点で公式な情報はどこにも無いそうです。
製品として販売しているものの情報が
バージョンが変わったとたんに開示されない事に疑問は残りますが
無いものを回答しろといってもしょうがありませんので
この質問はしめさせていただきます。
検索等でこのページを見られた方へ
技術サポートは受けられるとの事なので
「このコマンドラインで起動するとおかしんだけど」や、
「こんなテストを行いたいんだけど」 のような問い合わせは、
電話すれば回答して頂けるとの事でした。
#その他の2016で確認したコマンドラインスィッチ
###読み取り専用
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" "C:\hoge\DATABASE.accdb"
"F:\DATABASE9.accdb" /ro
CMD.Exeからは動かない
ファイル名を指定して実行から起動すると開くが、読み取り専用にはならない
msaccess.exe "F:\DATABASE9.accdb" /ro
CMD.Exeからは動かない
ファイル名を指定して実行にすると開くが、読み取り専用にはならない
####msaccess.exe /ro "F:\DATABASE9.accdb"
CMD.Exeからは動かない
ファイル名を指定して実行からは成功する。
/ro "F:\DATABASE9.accdb"
CMD.exe,ファイル名を指定して実行もエラー
###Repair
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /repair "C:\hoge\Source.accdb"
成功する
###X
/x <マクロ>
/x スイッチの前に指定されている Access データベースを開いた後、指定したマクロを実行します。データベースを開いたときにマクロを実行する別の方法として、AutoExec という名前のマクロを作成することもできます。
マクロにはウイルスが含まれている可能性があるため、実行する場合には注意してください。感染への予防策として、最新のウイルス対策ソフトウェアをコンピュータで動作させ、セキュリティ センターを使用してデジタル署名のないマクロをすべて無効にし、信頼できるマクロの作成元の一覧を管理してください。
- ここで言っているマクロは独立マクロ(アクションマクロ)のこと。VBAではない。
まずVBAのモジュールを作成し、次のコードを入れる。
Option Compare Database
Option Explicit
Function Macro_test()
Call test
End Function
Sub test()
MsgBox "hello, world!"
End Sub
次にマクロを作成しプロシージャの実行でプロシージャ名 Macro_test() とし、このマクロをtestMとして保存する
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /x "testM" "C:\hoge\Source.accdb"
###CMD
Command 関数
適用対象: Access 2016 Access 2013 Access 2010 Access 2007 Access 2010 Developer Access 2007 Developer Access 2013 Developeraccdb
Function Macro_CheckCommandLine()
'Macro button "testM1"
Call CheckCommandLine
End Function
Public Sub CheckCommandLine()
' Check the value returned by Command function and display
' the appropriate form.
If Command = "Orders" Then
MsgBox "Orders"
ElseIf Command = "Employees" Then
MsgBox "Employees"
Else
Exit Sub
End If
End Sub
"C:\Program Files\Microsoft Office\Office11\Msaccess.exe" "C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb" /cmd "Orders"
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" "C:\hoge\Source.accdb" /cmd "Orders"
Access 2016は クライアントの設定にコマンドライン引数がある。
上記を実行すると Odersが入る。
###複合技
VBAのプロシージャを登録しておくと、以下のようにすると引数を指定してマクロを実行できる。
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /x "testM1" "C:\hoge\Source.accdb" /cmd "Orders"
###Convertによる変換(Access2007以降)
mdb Access2000以降のMDB→Accdbのみ可能
/convert <対象データベース>
以前のバージョンの Access データベースまたは Access プロジェクトを Access 2007 のファイル形式に変換し、そのファイルに新しいファイル名を付けて、Access を終了します。/convert スイッチの前に、変換元データベースを指定する必要があります。
"C:\Program Files\Microsoft Office\root\Office16\MSACCESS.EXE" /convert "C:\hoge\convert.accdb" "c:\hoge\2003.mdb"
/convert 変換先.accdb 変換元.mdb