三流君 ken3のmemo置き場

三流プログラマーのメモ書きです。主にVBAやWindowsの話題が多いです

挨拶・自己紹介:
失敗続きのAB型の変わり者 :三流プログラマー Ken3です
フリーのエンジニア・個人事業主です・・と書くと聞こえはイイが(それとなくカッコよく聞こえるが)、 現在は小さな案件の受注請負 と 短期派遣 で 日々つつましく?ほそぼそと暮らしてます。

よく検索されるキーワード: [質問回答XXXXさんへ] [CreateObject] [VBA] [JRA競馬オッズ]

VBA Excelから起動したAccess.Applicationを残したい .UserControl = Trueを実験してみた

accApp.UserControl = True を入れてテストしてみました。
※よし実験終了、QAサイトの回答に得意気に書こうとしたら、
質問が解決済みになっていたのは内緒です。

youtu.be
https://youtu.be/qyL7ozYEds0
目次
00:00 やりたいこと
00:30 1.不具合の再現
01:28 解決策 2.UserControl = True

QAサイト
teratail.com
に下記の質問があったので、実験してみました

エクセルVBAでアクセスを開を、プロシージャが終了しても
そのまま開いておきたいのですが、下記ののコードだと閉じてしまいます。
変数の中身がなくなるので閉じてしまうと思うのですが、
プロシージャが終了しても、そのまま開いておく方法はありますでしょうか。

Dim accApp As Access.Application

Set accApp = New Access.Application
accApp.OpenCurrentDatabase ActiveWorkbook.Path & "\DB_sample.accdb"
accApp.Visible = True

まずは、
1.不具合の再現

Sub test()

    Dim accApp As Access.Application
    
    Set accApp = New Access.Application
    accApp.OpenCurrentDatabase ActiveWorkbook.Path & "\DB_sample.accdb"
    accApp.Visible = True

    accApp.DoCmd.OpenForm "t_data"  'おまけでテストフォームを開く
    
    MsgBox "無事起動できてよかった、よかった"

End Sub

次に解決案をテスト
2.UserControl = True で 勝手にユーザー起動にする

単純に
accApp.UserControl = True
で、
勝手にユーザー起動にする
試してみてください。

Sub test_UserControl_True()

    Dim accApp As Access.Application
    
    Set accApp = New Access.Application
    accApp.OpenCurrentDatabase ActiveWorkbook.Path & "\DB_sample.accdb"
    accApp.Visible = True

    accApp.DoCmd.OpenForm "t_data"  'おまけでテストフォームを開く
    
    accApp.UserControl = True   '※ユーザー起動、コントロールにする
    MsgBox "無事起動できてよかった、よかった"
    

End Sub

公式ヘルプ
Application.UserControl プロパティ (Access)
https://learn.microsoft.com/ja-jp/office/vba/api/access.application.usercontrol
learn.microsoft.com
を見て、コードを一行、組み込んでみてください。

accApp.UserControl = True を入れてテストしてみました。
※よし実験終了、QAサイトの回答に得意気に書こうとしたら、
質問が解決済みになっていたのは内緒です。

#ExcelVBA #AccessVBA #デバッグ #Debug
#MSExcel #MSAccess #マクロ #VBA
#UserControl

Ken3 ホームページ 目次

分類:HPを大きく分けると4つの柱(分類)です。

  1. [VBA・マクロ プログラミング]の解説
    当店の人気はVBA系のCreateObject("XXXXXX.application")で他のアプリケーションを操作するサンプルが人気です
  2. [プログラマーの愚痴]では、あまり見せたくない三流プログラマーの内面かな。
    三流君を踏み台にする
  3. [古いクラシック ASP(Active Server Pages)]の解説。
  4. [元コンビニ店長時代の話]が弟に巻き込まれ、失敗した脱サラ、畑違い?の仕事で失敗。
主に上記4つの分類でHP作成やメルマガの発行を行ってます。
※更新頻度が落ちていて情報の鮮度が悪いです。



本当に三流なんです(笑):たまにスゴイですねなんて言われることもありますが、
真実は→ [三流君の真実は...] ←を初めに見てくださるとわかると思います。
(からくりは、成功例↑しか載せてなくて ヒドイ失敗例はお蔵入り迷宮入りが多かったりします)