• 締切済み

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 としても、ファイルが開いてるのが見えてしまいます。

みんなの回答

回答No.2

おっと失礼。 Cドライブ直下に置いているのでしたね。 Cドライブ直下はOSの聖域(UACで制限)なので C:\temp などのフォルダに、あああ.accdb をおいて行ってください。 Administratorsグループに属するアカウントであっても 『管理者として実行』しない限り 起動時に作成されるロック情報ファイル(あああ.laccdb)の書き込みができません。 なお、当方の『Test1』の内容は Sub Test1() beep '音を鳴らすだけ end sub 念のため、タスクマネージャでMSAccess.exe の残骸が残っていないか確かめてから お試しを。

回答No.1

objAcc.Visible = False にしているのなら出てこないハズなんですけどね。 もしかして、test1 モジュールの中で Msgbox とかで ユーザーに操作を要求する部分がありませんか? その場合には False にしていても出ざるを得ません。 test1 の内容次第かと。

dhdtrznp
質問者

お礼

早速のご返答ありがとうございます。 test1 の内容は、Msgbox等はありません。 どうやら、 objAcc.OpenCurrentDatabase "C:\あああ.accdb", False でファイルが起動するようです。 objAcc.Visible = False objAcc.OpenCurrentDatabase "C:\あああ.accdb", False objAcc.Visible = False としたら、一瞬だけファイルが立ち上がります。

関連するQ&A

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

    アクセスです。 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 みたいなことがやりたいです。

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

    アクセス 既にファイルが開いているのなら開かない(二重起動防止)とするには? 自分なりにコードを考えてみたのですが 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はアクセスには用意されてない用語のようです。 このような場合どうすればいいでしょう?

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

    オフィス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」で閉じてしまいます。 ずっと開き続けるにはどうすればいいでしょうか?

  • アクセスのセキュリティの警告の非表示

    現在、VBSでアクセスのマクロを起動させているのですが、 起動時にセキュリティの警告を聞いてこないようにしたいのですが、 なにか方法はあるのでしょうか? ちなみに現在のプログラムは '' データベース名・・・db.mdb(デスクトップにある場合) マクロ名・・・macro Dim AcApp Set AcApp = CreateObject("Access.Application") AcApp.visible = true AcApp.OpenCurrentDatabase "C:\Documents and Settings\×××\デスクトップ\db.mdb" AcApp.DoCmd.RunMacro "macro" AcApp.CloseCurrentDatabase AcApp.Quit Set AcApp = Nothing です。 よろしくお願い致します。

  • Excel から Accessクエリーを実行したい

    下記のようなマクロを組んでMS Accessのクエリー結果をExcelに出力したいのですが「レコードがない」というエラーになります。正しいコーディングを教えてください。 Sub DataFromAccess() Dim AccessApp As Object Set AccessApp = CreateObject("Access.Application") myDBName = "C:\MyAccess.mdb" '出力先フルパス xlsName = "C:\Invoice.xls" With AccessApp .Visible = True .OpenCurrentDatabase myDBName, acViewNormal .DoCmd.OutputTo acOutputQuery, "クエリー名", acFormatXLS, xlsName, True .CloseCurrentDatabase .Quit End With Set AccessApp = Nothing End Sub

  • Accessのフォームだけを表示するには?

    Accessのフォームを使って処理を行う時に、Access自身のバックグラウンドを表示しないでフォームのみ表示して処理するというようなことはできるのでしょか? たとえば、Accessのインスタンスは非表示にしてフォームだけみえるようにする。 WSHで Set accApp = CreateObject("Access.Application") accApp.Visible = False accApp.OpenCurrentDatabase "C:\業務01.mdb" accApp.DoCmd.OpenForm "F010_情報表示フォーム", , , , acFormReadOnly accApp.Forms.[F010_010_情報表示].Visible = true などとして[F010_010_情報表示]フォームのみを表示するなどということはできるのでしょか? 実際これでは、何も表示されません。

  • win7でvbsファイルが実行できない

    以下のようなvbsファイルを実行してデータ取り込みをしていますが、 win7にPCを替えたら実行できなくなりました。 エラーは4行目なのですが、原因がわかりません。 どなたか教えていただけないでしょうか? sPath = "\\snysv○○\○○部\○○DIV\○○書データ\_ ○○データ入力用\○○データ.mdb"'実行するファイルのパスを指定 Set oApp = CreateObject("Access.Application") oApp.visible = FALSE oApp.OpenCurrentDatabase sPath 'ここでエラーになるようです。 oApp.Run "データ取込" 'プロシージャを実行します。 oApp.Quit : Set oApp = Nothing Const OverwriteExisting = True Set objFSO = CreateObject("Scripting.FileSystemObject") objFSO.CopyFile "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\*.xls" , "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\取込済データ\", OverwriteExisting objFSO.DeleteFile "\\snysv○○\○○部\○○DIV\○○書データ\○○書データ入力用\*.xls" Set FSO = Nothing

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

    こんばんは。 フォームにボタンを設置して、そのボタンをクリックすると 既存のアクセスファイルを開くようにしているのですが そのアクセスファイルを終了させてもタスクマネージャーのプロセスタブの 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からアクセスを開いて閉じてたら、 プロセスも終了させるようにしたいのですが、 どうすればいいでしょうか? ご回答よろしくお願いします。

  • 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で実行しているので、 「オートメーションを使って他のアプリケーションによって起動されました。」 に該当するのではないでしょうか?

  • ExcelVBAからAccessのモジュールを実行したい

    ExcelVBAからAccessのモジュールを実行したいのですが、 終了した後、タスクマネージャにExcelが残ってしまいます。 ExcelVBAは下記の通りです。 Dim objAccess As Object Dim strAccessPath As String strAccessPath = ThisWorkbook.Path & "\a.mdb" Set objAccess = CreateObject("Access.Application") objAccess.Opencurrentdatabase objAccessPath objAccess.Run "モジュール1" objAccess.closecurrentdatabase objAccess.Quit Set objAccess = Nothing です。 モジュールの内容は、  1.ExcelのシートをAccessにインポート  2.選択クエリでテーブルとの差分を抽出しグループ化  3.クエリをエクスポートする です。 objAccess.Run "モジュール1" をしなければExcelが残らないようなので Run以外の方法でモジュールを実行する方法をご教授ください。 (つたない説明でわかりにくい点あると思います。ご指摘ください)

専門家に質問してみよう