Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Microsoft 365)
エクセルからアクセスを起動
投稿日時: 24/07/22 17:00:41
投稿者: yuzupon

お世話になります。
やり方がわからず、すみませんが教えてください。
 
エクセルとアクセスを併用して業務を行ってますが、エクセルの画面上(シート上)にボタンを設けて、アクセスを起動することはできますか。
 
 
調べていて、このページを見つけたのですが、良くわからなくて行き詰まってます。
 
 
https://oshiete.goo.ne.jp/qa/1422724.html
 
こちらのページを参考に、次ぎの様にコードを書いてみました。
 
Sub Macro1()
 
Dim acObj As Object
Set acObj = GetObject("ファイル名.accdb")
acObj.Visible = True
acObj.docmd.openform "フォーム名"
 
End Sub
 
 
試してみると、この様なエラー表示されました。
 
 実行時エラー'-2147221020(800401e4)':
 オートメーション エラーです。
 構文が無効です。
 
 
 
エラーコードを調べ見ると、ポートが・・・とか、ますます難しいことが書いてありました。
 
 
 
そして、ベストアンサーを参考にこちらも試してみました。
 
 
Sub AccessOpen()
Dim appAcc As Access.Application
Dim myPath As String
Set appAcc = New Access.Application
myPath = "C:\"  '要設定
With appAcc
 .OpenCurrentDatabase myPath & "ファイル名.accdb", False
 '処理
 .Quit
End With
Set appAcc = Nothing
End Sub
 
 
 
すると、この様なエラーになりました。
 
 コンパイルエラー
 ユーザー定義型は定義されていません。
 
 
こちらのエラーコードも理解ができずに、行き詰まってます。
 
要設定の箇所に、アクセスにファイルのパスや、エクセルのパスを書いても同様でした。
 
 
すみませんが、何か方法がありましたら教えてください。
 
よろしくお願いいたします。

回答
投稿日時: 24/07/22 17:27:55
投稿者: simple

 後者のほうですが、
>ツールで、参照設定して、Microsoft Access xx.0 Object Library
 と言う点は実行されているんですよね。そこはいかがですか?

投稿日時: 24/07/22 18:54:20
投稿者: yuzupon

お世話になります。
 
simpleさま、ありがとうございます。
 
ツールの設定の箇所ですが、 Microsoft Access 16.0 Object Library の所にレ点をしてます。
 
その他に、Microsoft Office 16.0 Object Library の所にもレ点がしてあります。
 
何の事かもわからずにすみません。
 
お願い申し上げます。
 
よろしくお願いいたします。

回答
投稿日時: 24/07/22 19:31:11
投稿者: 半平太

> コンパイルエラー
> ユーザー定義型は定義されていません。
 
どのステートメントがハイライトされていますか?
(質問文のスペルと同じになっていますか?)

回答
投稿日時: 24/07/22 21:34:14
投稿者: hatena
投稿者のウェブサイトに移動

Accessを起動して何をしたいのですか。
 
Accessファイルを開くだけでいいのですか。
それとも、そのAccessファイルのデータを操作したり、取得したりしたいのですか。
Accessファイル内の特定フォームを開いてそのフォームをユーザーに操作させたいのですか。
・・・・
 
その目的により、コードは異なってきます。
 
まずは、やりたいことを具体的に説明してください。

投稿日時: 24/07/23 16:52:07
投稿者: yuzupon

お世話になります。
 
みな様、ご親切にありがとうございます。
 
半平太さま、ありがとうございます。
申し訳ございません。
お恥ずかしながら、意味がわからずスペルは見直してみましたが、同じでした。
 
 
 
hatenaさま、ありがとうございます。
 
行いたいのは、アクセスで併用している作業のフォームを開きたいだけです。
見たいフォームは、いつも起動すると開くので、起動するだけでも助かります。
 
 
 
エクセルで、いつも画面がいっぱいになって、エクセルの画面(シート上)からすぐにアクセスも開けてたら手間がうんと楽になるとおもって、みな様に面倒をおかけしちゃってすみません。
 
エクセルも、マクロとかいろいろ勉強不足でよくわからずに質問して、申し訳ございません。
 
お願いいたします。
 
よろしくお願いいたします。

回答
投稿日時: 24/07/23 17:41:45
投稿者: hatena
投稿者のウェブサイトに移動

yuzupon さんの引用:

行いたいのは、アクセスで併用している作業のフォームを開きたいだけです。
見たいフォームは、いつも起動すると開くので、起動するだけでも助かります。

 
そういうことなら、Shell関数ですね。
 
コード例
Sub Macro1()
    Dim fileName As String
    fileName = "C:\Test\test.accdb"
    Shell "MSAccess.exe """ & fileName & """", vbNormalFocus
End Sub

 
Shell 関数 - Microsoft サポート
https://support.microsoft.com/ja-jp/topic/shell-%E9%96%A2%E6%95%B0-ff2e4b1b-712d-4e34-aea6-6832eadd3c63

回答
投稿日時: 24/07/23 18:17:29
投稿者: MMYS

yuzupon さんの引用:

エクセルも、マクロとかいろいろ勉強不足でよくわからずに質問して、申し訳ございません。

拝見するに、VBAの知識がはどの程度お持ちでしょうか。ご希望の動作は、最低でも初心者向けVBAは習得済みで、簡単なコードは自身で作成できる知識は必要です。
その上で、そもそも「ファイルを開く」の内部動作の仕組みの理解が必要で、それを理解したうえで、その動作をコードで指示することになります。
 
hatenaさんか、参考コートを提示されてますが、コードを理解するにはVBAのほかに、コマンドラインの理解が必要です。
 
 
yuzupon さんの引用:

見たいフォームは、いつも起動すると開くので、起動するだけでも助かります。
 
エクセルで、いつも画面がいっぱいになって、エクセルの画面(シート上)からすぐにアクセスも開けてたら手間がうんと楽になるとおもって、

いつも使うAccsesファイルの起動が目的なら、Accsesをタスクバーにピン留め。タスクバーのAccsesアイコンを右クリック。あとは目的の選んでファイルを開けばよいかと。(よく使うファイルはピン留めしましょう)
この方法ならExcelを最大化していても、タスクバーから目的のファイルを開けます。
 
Windowsの標準機能ですから、VBA知識は不要です。
 
 

投稿日時: 24/07/24 09:36:00
投稿者: yuzupon

お世話になります。
  
みな様、ご親切にありがとうございます。
 アドバイスありがとうございます。
 
 
hatena様、ありがとうございます。
 
いただいたコードで、無事にアクセスのファイルが起動してフォームも開いて嬉しいです。
とても作業がやりやすくなって、助かりました。
サポートのページもよく読んで勉強します。
 
ご親切にすみませんでした。
 
 
 
MMYS様もありがとうございます。
仰る通り、VBAの知識は低いので、勉強する様にいたします。
ピン留めの機能は、他で利用してますが事情でエクセルの画面から開きたかったのです、すみません。
 
 
 
hatena様、ほんとうにありがとうございました。
助かりました。
 
また勉強させてください。
 
よろしくお願いいたします。