
ACCESS、Excelの2003を使用しています。
常駐パソコンにACCESSプログラムを起動させておき、朝の6時になったらExcelの標準モジュールに記載しているマクロを起動し、開いたExcelを保存しようとしています。
以下ACCESSに記載しているマクロです。
If Format(Now(), "hh:nn") = "06:00" Then
strXlsS = "D:\テスト用ファイル.xls"
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlbook = xlApp.Workbooks.Open(strXlsS)
'エラー箇所'
Application.Run "テスト用ファイル!テスト"
End If
実行時エラー2517
プロシージャを見つけることができません。
と、エラーが表示されてしまいます。
該当のExcelのブックは開けているのですが、モジュールのマクロを起動することが出来ません。
書き方がおかしいのでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
Office2003は持ち合わせていないので2010でのお話です。
Excelの標準モジュールに
Sub AccSub()
'実際の処理の代わり
MsgBox Sheets("ここにはシート名を").Cells(1, 1).Value
End Sub
Function AccFunc(ByVal a As Long, b As Long) As Long
AccFunc = a + b
End Function
としました。標準モジュールですからExcelの何処からでも呼び出せます。
で、
Accessでは
Sub UseXLProcedure()
Dim XL As Object
Dim BK As Object
Set XL = CreateObject("Excel.Application")
Set BK = XL.workbooks.Open("d:\DATA\123\マクロ.xls")
XL.Windows(BK.Name).Visible = True
XL.Visible = True 'False の場合メッセージボックスだけが出る。但し最前面にはならない
' XL.UserControl = True
Call XL.Run(BK.Name & "!AccSub")
'XL.Visible = True とした場合には当方(Win7 & Office2010)では最前面となりました
MsgBox "1+2は " & XL.Run(BK.Name & "!AccFunc", 1, 2)
'こっちのメッセージはアクセスからのですが画面遷移しないので
'タスクバーで手動でアクセスに切り替えてください
XL.Quit
Set BK = Nothing
Set XL = Nothing
End Sub
・・・での確認はしています!
(プロシージャ名に全角文字を使っていないのは単にIMEの切り替えが面倒くさいためです。)
(過去に全角中黒 ・ がダメ、詳細 というオブジェクトがダメ とか色々・・ありましたが)
(Application.Run "テスト用ファイル!テスト" が ダメ なのは前回回答の説明のとおり。)
(BK.Name にしてあるのはファイルのバージョン(XLS→XLSM)変更などを考慮したから)
ただねー。Excelを立ち上げて行うのは少し回りくどいような気もします (^_^;)
ゆくゆくはAccessでExcelをオートメーションで全て操作する方向へ持って行くのがベターかな。
そちらの状況が全く不明なので要らぬお節介かもしれませんけど・・・。
以下は道草的な独り言
(当方でも未体験ゾーンです。)
>If Format(Now(), "hh:nn") = "06:00" Then・・・
は、PCがとてもビジーな時でも間違いなく実行されるだろうか?
PCがスリープに入ってしまっていたら・・・?
Accessファイルを開き忘れていたら・・・。
と考えるとタスクスケジューラを利用する方法も調べた方が良いかもですね。
No.3
- 回答日時:
#1です。
> Application.Run "テスト用ファイル.xls!test"
Runの記述は、モジュール名!プロシージャ名じゃなかったかな?
モジュールが異なれば、同一プロシージャ名はアリの場合があるから。
(でないとForm毎に ボタン1_clickが宣言できない)
目的のモジュール名が対象ブック内でユニークなら、単にTESTだけで良さそう。
でも、標準モジュール上で、かつ、Publicなのかな?
シート上で宣言してたらPrivateになるかも。
No.2
- 回答日時:
コード中の
Application は自身の事を指しています。
Excel中なら Excel.Application
Access中なら Access.Application になります。
なので、
Application.Run "テスト用ファイル!テスト" は
MDBファイルの中の "テスト用ファイル!テスト" プロシージャを実行しなさい、
という意味になりますから、「そんなモノは無い!」と言われてしまいます。
せっかく、 Set xlApp = CreateObject("Excel.Application")
としているのですから
xlApp.Run "テスト用ファイル!テスト"
としてみてください。
それと、どうやってXLSファイルを閉じているかが不明なので
杞憂かも知れませんが
処理がすべて終了した(Excelは一個も使っていない)状態でタスクマネージャで、Excel.exe が残っていないか
確認したほうが良いかも?
No.1
- 回答日時:
モジュール・プロシージャ名の日本語使用を止めて、
Module1•subTESTとかにしてみて下さい
回答ありがとうございます。モジュールの方で日本語の使用を止めました。
モジュールは Sub test () という名前です。
Application.Run "テスト用ファイル.xls!test"
に書き換えましたが、未だに実行時エラー2517が発生します。
ACCESSから上記のコードでExcelを自動に開くと、Application.Runの部分でエラーが発生します。
Dドライブに保存しているExcelファイルをダブルクリックして開いた状態で、ACCESSからApplication.Runを実行しても同一のエラーが発生します。
ACCESSから開いたExcelを対象に、他のExcelからApplication.Runを実行してもエラーが発生します。
しかし、Dドライブに保存しているExcelファイルをダブルクリックして開き、他ExcelからApplication.Runを実行すると正常に働きます。
ACCESS側から開く処理、ACCESS側のApplication.Runの処理がおかしいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel起動時にエラーダイアログが表示される 3 2022/07/28 19:52
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- Excel(エクセル) EXCELの外部データ取得ができない 1 2023/03/23 09:03
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/11 12:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/02/07 09:58
- Excel(エクセル) マクロの付いたExcelが開けません 3 2023/02/01 10:54
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【access】マクロファイルのコ...
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
100万行のCSVを10万行ずつのフ...
-
accessのmdbが勝手にできている?
-
CSV出力
-
アクセスクエリ(複数)→マクロ...
-
ThunderbirdのメールをCSVでま...
-
AccessからORACLEへのリンク設...
-
Batch: フォルダ内の特定のファ...
-
DBDが動作しません。
-
社内Excel共有ブックでの保存ト...
-
エクセル表にマクロで・・・
-
共有フォルダに誰が何にアクセ...
-
Becky!で「メールサーバーへの...
-
BULK INSERTのエラー取得は可能...
-
エクセルで縦のカラムデータを...
-
ACCESS で 項目名を出力せずに...
-
シーケンシャルファイルのデー...
-
列名に変数を使うことはできな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ACCESSエラー「モジュールがあ...
-
●ACCESS→Excelのエクスポート(...
-
mdbファイル開けない
-
ACCESSでExcelマクロを起動
-
【access】マクロファイルのコ...
-
Accessにてコマンドボタン時に...
-
【Excel】[Expression.Error] ...
-
SQLPLUSで結果を画面に表示しない
-
100万行のCSVを10万行ずつのフ...
-
共有フォルダに誰が何にアクセ...
-
selectした結果の余計な余白を...
-
Becky!で「メールサーバーへの...
-
Batch: フォルダ内の特定のファ...
-
特定のエクセルファイルを起動...
-
【CSVファイル】先頭の文字列に...
-
ADOを使ったDBアクセス後のメモ...
-
「○○○.ldb」のAccess レコード ...
-
ThunderbirdのメールをCSVでま...
-
アクセスでエラー このフィー...
-
アクセスクエリ(複数)→マクロ...
おすすめ情報