Accessを使用してアクセスアプリケーションを開く方法

このQ&Aのポイント
  • Accessを使用してアクセスアプリケーションを開く方法をご教示ください。
  • Accessアプリケーションを開いてもすぐに閉じてしまう問題について、解決方法を教えてください。
  • アクセスアプリケーションが一瞬だけ開いて閉じてしまう問題を解決する方法をお教えください。
回答を見る
  • ベストアンサー

アクセスからアクセスを立ち上げたいのですが

オフィス2007です。 アクセスからアクセスを立ち上げたいのですが、うまくいきません。 test1.accdbにフォームとコマンドボタンを設置して、 Private Sub コマンド1_Click() Dim acApp As Object Set acApp = CreateObject("Access.Application") acApp.OpenCurrentDatabase C:\test2.accdb" acApp.Visible = True End Sub を実行したのですが、アクセスのアプリケーションが一瞬だけ開いて、閉じてしまいます。 「 acApp.Visible = True」の部分に、ブレークポイントを設定して、ステップインしてみたところ、 acApp.Visible = Trueでアクセスのアプリケーションが立ち上がり、test2.accdbが表示されますが 「End Sub」で閉じてしまいます。 ずっと開き続けるにはどうすればいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答No.3

提示された VBA でやろうとした場合、 acApp.UserControl = True を記述追加してみて、どうなりますか。 ※ ただ単に Accessファイルを別プロセスで起動したい場合 ・コマンドボタンの HyperlinkAddress に起動したいファイルパスを設定するとか ・FollowHyperlink でそのファイルパスを指定するとか ・CreateObject("Shell.Application").ShellExecute でそのファイルパスを指定するとか ・API の ShellExecute を使って   Call ShellExecute(0, "OPEN", ファイルのパス, "", "", 1) 等々、実現する方法はいろいろあると思います。 ※※ それぞれ起動された後の表示の違い等は実際にやってみてください。

ng99e9
質問者

お礼

方法はいくつかあるのですね。ありがとうございました。

その他の回答 (2)

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

Dim acApp As Object をグローバル変数にすればどうでしょう。 ちなみに "C:\test2.accdb" まえダブルクォーテーションがありません。

ng99e9
質問者

お礼

Public acApp As Object にしたら、できました! ダブルクォーテーションつけわすれてました。 ありがとうございました。大変参考になりました。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

ご質問への回答とは離れますが「2つ立ち上げて何をなさりたいのか」を教えていただけますか?

ng99e9
質問者

お礼

本来は二つのファイルを立ち上げたいのならば、 C:\にはいっている test1.accdb test2.accdb をクリックして開くか、 スタートアップに入れて起動時に開けばいいのですが test1.accdbのフォームのコマンドボタンを押してあるプロシージャーを実行するタイミングでtest2.accdbを開きたいのです。 説明不足で申し訳ございません。 再度ご回答宜しくお願いいたします。

関連するQ&A

  • VBからaccess UserControl

    vb.netから 【VB】-------------------------------------------- Sub AccOpen() Dim AccApp As Access.Application Dim MyPath As String MyPath = "○○.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True End Sub -------------------------------------------------- でアクセスのファイルを開いているのですが、 アクセスの標準モジュールで 【access】-------------------------------------------- Sub test() MsgBox "The user started Access: " & Application.UserControl End Sub ---------------------------------------------------- を実行すると、Trueが返ってくるのですが、正しくはFalseなのではないでしょうか? アクセスのヘルプをみると、 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・  True 現在のアプリケーションはユーザーによって起動されました。 False 現在のアプリケーションは、オートメーションを使って他のアプリケーションによって起動されました。 と書かれています。 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・  AccOpenはvbで実行しているので、 「オートメーションを使って他のアプリケーションによって起動されました。」 に該当するのではないでしょうか?

  • 他のデータベースのフォームを開きたい

    いつも、お世話になります。 ・予定(accdb)の " フォームA" で作業中 ・会社予定(accdb)の "F_Calendar" のフォームを開いて参照したい場合 予定のフォームAに "コマンドボタン" を配して、クリックのイベントブローシャー に、記述するのを色々調べ、手本にしましたがうまくいきません。 試したことは下記のことですが、メチャメチャになっていると思います。 お解りの方がいましたら、お教えいただきたいと思いますのでよろしくお願いいたします。 あるいは、クリック時のマクロでは出来ないでしようか? Option Compare Database Dim appAccess As Access.Application Set appAccess = CreateObject("Access.Application.9") Private Sub コマンド37_Click() appAccess.OpenCurrentDatabase ("C:¥Users¥Public¥仕事¥会社予定.accdb") appAccess.DoCmd.OpenForm "F_Calendar" appAccess.Visible = True Set appAccess = Nothing Exit_コマンド37_Click: Exit Sub End Sub

  • 既にファイルが開いているのなら開かない(二重起動防

    アクセス 既にファイルが開いているのなら開かない(二重起動防止)とするには? 自分なりにコードを考えてみたのですが Sub Sample() Dim acApp As Access.Application Set acApp = CreateObject("Access.Application") acApp.OpenCurrentDatabase "C:\test.accdb" '該当のファイルが開いてないのなら、 If acApp.ReadOnly = False Then acApp.Visible = True acApp.UserControl = True End If End Sub これだと、.ReadOnlyがコンパイルエラーになります。 どうやらReadOnlyはアクセスには用意されてない用語のようです。 このような場合どうすればいいでしょう?

  • access全画面表示されない

    VBからacesssを開くと全画面表示されません。 しかし、フォルダをダブルクリックして開いたり、 空のaccessアプリケーションを立ち上げて、「ファイルを開く」で開くと、全画面表示されます。 【VB】-------------------------------------------- Sub AccOpen() Dim AccApp As Access.Application Dim MyPath As String MyPath = "○○.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True End Sub -------------------------------------------------- 【access】---------------------------------------- Private Sub Form_Load() DoCmd.RunCommand acCmdAppMaximize 'アプリケーションのサイズを最大化する Vbから開くと最大化されない。 End Sub -------------------------------------------------- としています。 アクセス2007、VB2010です。 VBからだと DoCmd.RunCommand acCmdAppMaximizeが無視される理由を教えてください。

  • 「accessがもし開いてるなら開かない」とするに

    「accessがもし開いてるなら開かない」とするには? http://okwave.jp/qa/q7856640.html を参考にしたのですが、 Sub test1() Dim AccApp As Access.Application Dim MyPath As String MyPath = "C:\Users\Documents\test.mdb" AccApp = CreateObject("Access.Application") AccApp.Visible = True AccApp.OpenCurrentDatabase(MyPath) AccApp.UserControl = True End Sub で、アクセスのファイルを開くことができるのですが、 もし"C:\Users\Documents\test.mdb"が開いていたら開かない とするにはどうすればいいでしょうか? http://okwave.jp/qa/q8051720.html これのアクセスバージョンをするにはどうすればいいですか? Dim book As Workbook や For Each book In Workbooks をアクセスの場合、どうすればいいのかわかりません。

  • タスクマネージャーのプロセスから消えなくなる

    こんばんは。 フォームにボタンを設置して、そのボタンをクリックすると 既存のアクセスファイルを開くようにしているのですが そのアクセスファイルを終了させてもタスクマネージャーのプロセスタブの MSACCESS.EXE*32 がいつまでも残ってしまいます。 VBのフォームを閉じると、MSACCESS.EXE*32は消えます。 VBのコードは、 Private Sub cmb_Access_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmb_Access.SelectedIndexChanged Call AccessOpen() End Sub ------------------------------ 標準モジュール Sub Access_Open() Dim AccApp As Access.Application Dim MyPath As String MyPath = "C:\test.accdb" AccApp = CreateObject("Access.Application") AccApp.OpenCurrentDatabase(MyPath) AccApp.Visible = True AccApp.UserControl = True AccApp = Nothing End Sub です。 VBのフォームから test.accdbを開く→閉じるを繰り返してると、 プロセスが溜まってしまって、アクセスでエラーが起こります。 なので、VBからアクセスを開いて閉じてたら、 プロセスも終了させるようにしたいのですが、 どうすればいいでしょうか? ご回答よろしくお願いします。

  • アクセスからアクセスファイルを開くには?

    アクセスからアクセスファイルを開きたいのですがうまく出来ないので教えてください。 Option Compare Database Option Explicit Sub test() Dim App As Access.Application Dim MyFileName As String Set App = CreateObject("Access.Application") MyFileName = CurrentProject.Path & "\アクセスファイル名.mdb" With App .Visible = True End With Set App = Nothing End Sub で、 .Visible = True でアプリケーションは開きますが Set App = Nothing を通過すると開いたアプリケーションが閉じてしまいます。 それにアプリケーションが開くだけで肝心のファイルが開かれません。 なので「.ファイルを開くVBAコード」が必要だと思うのですがそのコードがわかりません。

  • エクセルから現在起動しているアクセスファイルをアクティブにしたい

    現在エクセルとアクセスを開いています。 エクセルマクロで現在開いているアクセスをアクティブにしたいのですがうまくいきません。 Sub アクセスをアクティブにする() Dim app As Object Set app = CreateObject("Access.Application") app.Application.Visible = True app.Visible = True End Sub これを実行すると新たに空のアクセスアプリケーションが開きます。 (app.Application.Visible = True)を抜いても同じです。 現在起動中のアクセスファイル(○○○.mdb)をエクセルからアクティブにするにはどうすればいいのでしょうか? ご教授よろしくお願いします。

  • 画面のちらつきをやめるにはどうすればいいでしょうか

    アクセスです。 Sub test() Set objAcc = CreateObject("Access.Application") objAcc.OpenCurrentDatabase "C:\test.accdb", False objAcc.Run "プロシージャー" objAcc.Quit Set objAcc = Nothing End Sub ------------------------- 上記のプロシージャーを実行して、他のファイルのプロシージャーを実行しているのですが 毎回ファイルが立ち上がってしまいます。 画面のちらつきをやめるにはどうすればいいでしょうか? DoCmd.SetWarnings False と DoCmd.SetWarnings True を入れてみましたが、無意味でした。 objAcc.OpenCurrentDatabase でアクセスが起動し、 objAcc.Quit で閉じます。 エクセルで例えるのなら、 Application.ScreenUpdating = False みたいなことがやりたいです。

  • objAcc.Visible = False 可視

    アクセスからアクセスファイルを開いています。 Set objAcc = CreateObject("Access.Application") objAcc.OpenCurrentDatabase "C:\あああ.accdb", False objAcc.Run "test1" objAcc.Quit Set objAcc = Nothing の様にして、VBAでアクセスファイルを開いてるのですが この時、起動するファイルの可視をFalseにすることは可能でしょうか? Set objAcc = CreateObject("Access.Application") objAcc.Visible = False objAcc.OpenCurrentDatabase "C:\あああ.accdb", False としても、ファイルが開いてるのが見えてしまいます。

専門家に質問してみよう