![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
ACCESSとエクセルは、プログラム的には、別世界(別単位)なんだから、Access側で直接 UserForm1.Show を書いてもダメ。
(1)Objectライブラリの存在(エクセル持っておれば問題ない)
(2)参照設定(使いますよと仁義を切る)
(3)実際にAccessが動いている世界で、エクセルのオブジェクトを使えるようにする。CreateObject("Excel.Application")
(4)エクセルVBA類似のコードを書く。
(5)(4)では、#2でおっしゃっていることほか、特有の注意事項がある。
が必要です。
---
質問ズバリのコードは見つからないでしょうが、Googleで
「Access エクセルを開く」などで照会すると、ACCESSからエクセルの世界に入る部分のコードは良く出てくる。
http://www.serpress.co.jp/access/vba016.html など。
objExcelをいつも先頭につけるようにして、やってみてください。
ただし、開くまでは、上記のWEBの例は、下記が判りやすいと思う。
Sub test04()
Set objExcel = CreateObject("Excel.Application")
objExcel.workbooks.Add '新しいワークブックを開く
objExcel.Visible = True 'Excelを表示する
objExcel.workbooks.Open "XXX.xls"
objExcel.ScreenUpdating = True 'Excelの画面を更新する
Set objExcel = Nothing
End Sub
このObjectの系列はobjExcelーブックーシートーセル(Range)です。
しかしUserFormはこの系列外です。このオブジェクトを捉えるやり方は、私には、その先が情報を得にくい。
そこで、ユーザーフォームを表示するプログラムを実行するのだと考えて
エクセルの、今問題にしているブックのModule1に
Sub test02()
UserForm1.Show
End Sub
をつくり、
Access側のModuleに
Sub test04()
Set objExcel = CreateObject("Excel.Application")
'objExcel.workbooks.Add '新しいワークブックを開く
objExcel.Visible = True 'Excelを表示する
Set wb = objExcel.workbooks.Open("XXXX.xls")
objExcel.Run wb.Name & "!Module1." & "test02"
objExcel.ScreenUpdating = True 'Excelの画面を更新する
Set wb = Nothing
Set objExcel = Nothing
End Sub
のようなコードを作る。
Access側で実行すると、エクセルのUserForm1が出た。
不十分な点が有るかもしれないが、骨格はこんなところかと思う。
No.2
- 回答日時:
こんばんは。
ExcelのUserForm で操作する場合は、終了のタイミングが計れませんので、xlApp.Quitは、エラーが発生しない限りは、そのまま、残したほうがよいです。そのまま、xlApp のオブジェクトをSet で解除してはいけません。良く使うようでしたら、参照設定したほうがよいのですが、あまり頻繁でないようなら、CreateObject("Excel.Application")やGetObject で良いと思います。今回は、参照設定はしないほうが良いかも……。
'-------------------------------------------
Sub TestCallExcel()
Dim strFname As String
Dim xlApp As Object
Dim xlBook As Object
'参照設定:Microsoft Excel xx Object Library
'Set xlApp = New Excel.Application
'参照設定しない場合
Set xlApp = CreateObject("Excel.Application")
On Error GoTo ErrHandler
'Excelの標準パスにあるブック名
strFname = xlApp.DefaultFilePath & "\TestBook1.xls"
xlApp.Visible = True
Set xlBook = xlApp.Workbooks.Open(strFname)
xlApp.Run xlBook.Name & "!Macro1" '標準モジュールにあるマクロ名
Exit Sub
ErrHandler:
'エラーが発生したらオブジェクトをオフにする
If Err.Number > 0 Then
MsgBox Err.Description
End If
xlApp.Quit
Set xlBook = Nothing
Set xlApp = Nothing
End Sub
'-------------------------------------------
No.1
- 回答日時:
AccessからExcelを起動し、指定ブックを開いて、その中のマクロを実行させる事は可能ですので、そのマクロでUserForm1.Showを実行すればお望みの事ができると思いますが、それから何をなさりたいのか、よかったら教えて下さい。
http://sanryu.net/acc/tips/tips300.htm
この回答へのお礼
お礼日時:2009/07/14 21:09
ありがとうございます。
何をやりたいかと言うと、
アクセスで処理している同時にエクセルのフォームを呼び出し、次の作業の準備をしたかったのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) ハイパーリンクの削除について 2 2022/11/10 07:32
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) リストボックス セルの値を取得する 1 2022/05/21 20:47
- Visual Basic(VBA) リストビューに条件による表示 1 2022/06/01 20:19
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ADOを使ったDBアクセス後のメモ...
-
テキストボックス名を変数で指...
-
Oracle:Oracleシーケンスとは?
-
AccessのMDBファイルを開く際に...
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
特定のエクセルファイルを起動...
-
共有フォルダに誰が何にアクセ...
-
Batch: フォルダ内の特定のファ...
-
VBAでCSVファイルが使用中かど...
-
AccessVBAで作成したExcelファ...
-
100万行のCSVを10万行ずつのフ...
-
ACCESSのモジュールエラー?
-
AccessからExcelのファイルを起...
-
TXTで作成したファイルをDATフ...
-
tmpファイル なぜできる?削除...
-
ACCESS で 項目名を出力せずに...
-
mdbファイル フォームを開くと...
-
エクセルで縦のカラムデータを...
-
Access2007のエキスポートについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ADOを使ったDBアクセス後のメモ...
-
AccessのMDBファイルを開く際に...
-
テキストボックス名を変数で指...
-
ストアドプロシージャで外部プ...
-
Symfowareでの動的SQL
-
オラクルのシーケンスについて
-
アウトルックのメール送信
-
警告音について
-
Notesにて「指定したコマンドが...
-
ORACLE9iをVB6のADOで更新でき...
-
SQL Server 2000 SELECT文実行...
-
ACCESS2007でのDAO(?)につき...
-
postgresql DELETE後commit...
-
Oracle:Oracleシーケンスとは?
-
VBからRDOの接続ができない!困...
-
SQL Serverへエクスポートする...
-
Oracle10g キャッシュヒット率...
-
oracle8iでのシーケンス作成
-
パワーポイントの利用アイデア
-
ACCESS2000でテキストファイル...
おすすめ情報