アプリ版:「スタンプのみでお礼する」機能のリリースについて

アクセスからエクセルのプロシージャーを実行する際のエラーです。
おはようございます。長文ですがお許しください。

http://www.geocities.jp/cbc_vbnet/tips/excll.html(03.プロシージャの作成)
を参考にアクセスからエクセルのプロシージャーを実行させてるのですがエラーになります。

エクセルファイルのパス→C:\Users\User\Desktop\a.xlsm
エクセルファイルに入っているプロシージャ→test()

*********************エクセルの標準モジュール*********************
Sub test()
MsgBox ""
End Sub

*********************アクセスのイベント*********************
Private Sub 更新_Click()
Dim App As Excel.Application ’参照設定済み
Dim MyFileName As String
Dim res As Variant
MyFileName = "C:\Users\User\Desktop\a.xlsm"

Set App = Excel.Application
res = App.Application.Run(MyFileName & "!" & "test")
End Sub



このアクセスのイベントを実行すると、
「実行時エラー1004
マクロ'C:\Users\User\Desktop\a.xlsm!test'を実行できません。
このブックでマクロが使用できないか、また全てのマクロが無効になっている可能性があります。」
となります。

エクセルのマクロの設定は、「全てのマクロを有効にする」にしてあります。

a.xlsmはダブルクリックすれば普通に開けるし、testも問題なく実行できます。

そして、このアクセスのイベントを実行した後は、エクセルファイルが開けなくなります。
一瞬開くんですが、すぐ閉じてしまいます。

タスクマネージャーのプロセスからエクセルのアプリケーションを強制終了させると
再度開けるようになりますが、画像のように変なドキュメントの回復が出ます。

とりあえず、エクセルが開けなくなることは置いといて、
アクセスからエクセルのプロシージャーを実行する方法を教えてください。

当方オフィス2007です。ご回答よろしくお願いします。

「アクセスからエクセルのプロシージャーを実」の質問画像

A 回答 (2件)

こんにちは。



>MyFileName = "C:\Users\User\Desktop\a.xlsm"
>res = App.Application.Run(MyFileName & "!" & "test")
これをセットでみると、

App.Application.Run("'" & MyFileName & "'!" & "test")
とファイル名がついている場合は、「'」で括るはずです……。

  Dim xlApp As Excel.Application
  Dim xlBook As Excel.Workbook
  Dim MyFileName As String
  ' Dim res    As Variant
  'Instance 生成
  Set xlApp = New Excel.Application
  MyFileName = "C:\Users\User\Desktop\a.xlsm"
  Set xlBook = xlApp.Workbooks.Open(MyFileName)
  xlApp.Run "'" & MyFileName & "'!" & "test"
  xlBook.Close False
  xlApp.Quit
  Set xlApp = Nothing
End Sub

リンク先は、もう10年近く前で、環境が違いますから、同じようにいかないと思います。
根本的な解決にはないかもしれません。まだ、分からない部分があります。
こちらでは、MsgBox は、前面に出て来ませんでした。この程度でも、Windowを探して、それを最前面に持ってくるというコードを付けるのは、ちょっと大げさすぎます。

こちらは、Windows 7 ですが、同じような現象が得られました。OSが、XPでしたら、このコードで上手く通るはずです。

この回答への補足

ちなみに

xlApp.Visible = True
xlApp.Run "'" & MyFileName & "'!" & "test"

にしたら、全面にmsgboxが表示されました!

補足日時:2012/10/29 23:06
    • good
    • 0
この回答へのお礼

当方もwin7です。
ファイル名は‘で括るべきなのですね。以後そうします。

頂いたコードで実行してみたところうまくできました!ありがとうございました。
こちらでもMsgBox は前面に出て来ませんでした。

お礼日時:2012/10/29 23:01

こんばんは。



>xlApp.Visible = True
>xlApp.Run "'" & MyFileName & "'!" & "test"

>にしたら、全面にmsgboxが表示されました

どうもすみません、気が付かなくて!
もともと、Excel側がエラーを出していたので、いくつかのトラブルを想定しながら、今回の回答までに来たので、そこまでは気が回りませんでした。

私は、Win7 で試してダメだった後に、XPで試して、MsgBox だけ出るので、そのつもりでいたのでいたのです。
    • good
    • 0
この回答へのお礼

いえいえ、とんでもないです。大変助かりました。ありがとうございました。

お礼日時:2012/10/31 20:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!