1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Access 2010 later コマンドラインから最適化する - Access2016は要注意

Last updated at Posted at 2017-07-13

#今回のテーマ
最適化/修復だけ行うショートカットの作り方
"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

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?