プロが教えるわが家の防犯対策術!

お世話になります。
PLC/TakebishiDeviceXPlorer/PC(ExcelVBA)で、生産設備のモニタリング&分析を行うべく作業を進めています。
その中で『メインBookから別インスタンスでモニタBookをマクロ有効で開く』に関し、ネットの情報を頼りにvbsで実現する事は出来ましたが、vbsで下記エラーが発生しています。
(呼出側/起動Open側共に、問題なく次の動作に入り正常に動作しています。)

▲発生エラー
 :未知の実行時エラーです。/コード:800A9C68/ソース:MicrosoftVBScrip・・・

●メイン側呼出コード
'---引数
Dim arg_str10 As String '---Exle FullPathName
Dim arg_str20 As String '---Exle ModName
Dim arg_str21 As String '---Exle ProcName
temp1 = objMySheet.Range("D9")  ’---起動するモニタBook保存先
temp2 = objMySheet.Range("D10")  '---起動するBook名
arg_str10 = temp1 & "\" & temp2
arg_str20 = objMySheet.Range("D13")
arg_str21 = objMySheet.Range("D14")
vbsRslt = "開始": objMySheet.Range("D15") = vbsRslt
'---vbs起動
vbsRslt = Shell("WScript.exe """ & vbsFullPathName & """" _
& " " & arg_str10 & " " & arg_str20 & " " & arg_str21)
 ’---結果(実行OK_64[タスクID]5584) 
 objMySheet.Range("D15") = "実行OK_" & vbInformation & "[タスクID]" & vbsRslt
 ※マクロ直接起動です。BookOpenEventは使用していません。
■VBS
Option Explicit
DIM Prms
Set Prms = WScript.Arguments
DIM tgtExcelFullPName,tgtModule,tgtProc,tgtMacro
tgtExcelFullPName= Prms(0)
tgtModule=Prms(1)
tgtProc=Prms(2)
tgtMacro=tgtModule & "." & tgtProc
DIM objExcelApp,objWbk
Set objExcelApp= CreateObject("Excel.Application")
objExcelApp.EnableEvents=False
Set objWbk= objExcelApp.Workbooks.Open(tgtExcelFullPName,False,True)
objExcelApp.Visible = True
objExcelApp.Run"'" & objWbk.Name & "'!" & tgtMacro ←▲エラー発生行 
objExcelApp.EnableEvents=false
Set objWbk=Nothing
Set objExcelApp=Nothing

今後も機能を追加し仕組みが大きくなって行く事から、将来的にこのエラーが原因となり
仕組みの再構築等の事態になる事があるのかを確認しておきたいです。
ネットで「800A9C68」を検索してみましたが、英文のみで・・・・

教えてください。
1)エラーの意味合いは?
2)発生の原因と対処法は?

A 回答 (3件)

1) は、月次で、VBSから、VBAが実行できなかったというだけのエラーだと思います。



2)試しにこちら(○)に変えてみてください。

理屈は、マクロのセキュリティを騙すように、自分の配下から呼び出すという方法です。

'objExcelApp.Run"'" & objWbk.Name & "'!" & tgtMacro ←▲エラー発生行 
objWbk.Application.Run tgtMacro '←○

他に問題があるのかどうかは、まだ見ていません。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。

2)objWbk.Application.Run tgtMacro '←○
  objExcelApp.Run"'" & objWbk.Name & "'!" & tgtMacro ←× 
  『○』にてエラー無しに起動できました。
  理屈に関しては??ですが
  ⇒もう少し勉強したく、参照先等有りましたら教えてください。

1)月次で、VBSから、VBAが実行できなかったというだけのエラーだと思います。
(1)「月次で、」は何でしょうか?
(2)VBSから別インスタンスのエクセルを開き、そのVBAコードは
   実行できています、(但しVBSエラーが出る。)
  「VBAが実行できなかった」とはちょっと違うかなと?
  (800A9C68は、余計なお世話エラー?)

お礼日時:2018/05/10 13:36

>(1)「月次で、」は何でしょうか?


要するに、VBA単独でしたら、すぐ分かる、「○○のためにマクロが実行できません」というエラーメッセージ付きのエラーも、VBS を通すと、その内容がなくなって、エラーコードだけになってしまうものではないか、と考えました。

>2)VBSから別インスタンスのエクセルを開き、そのVBAコードは
>   実行できています、(但しVBSエラーが出る。)◆
>  「VBAが実行できなかった」とはちょっと違うかなと?

しかし、これはあくまでも推理だけで、実際は、Excel側からは確認できない、VBS の Unknown Error だから証明のしようがありません。

1)で書いたものは、一例ですが、そのエラー[◆]は、本当は、VBSからのものではなく、Excelのマクロからのでもなく、Excel本体からの何らかのメッセージだと思ったのです。

最近、私の別の質問の回答の中で、私の公開したマクロに、Excelのセキュリティの警告がでると言われて、エラーコードは違いますが、800... と似たコードで、同類のエラーで悩まされました。私の通常のPCでは発生しません。このVBSのコードを試してみた時に、その類の警告がコードとなって現れたのではないか、と思いました。だから「実行できなかった」というように捉えました。実際はそうではなかったようですが。

もし、それが正しければ、objExcelApp.DisplayAlerts = False で抑え込めるはずではあるけれども、そんな無茶なことはできませんね。

それで、経験的なことですが、Excel VBAだけの特徴で、オートメーション・オブジェクトとしてインスタンスが生成された時に、標準モジュールとオブジェクトモジュール(ThisWorkbookモジュールなど)と分離してしまう現象があります。だから、一旦、そのマクロは、分離したものではなく、自分の配下であるとして実行してやらなくてはならない、そういうところにあるのではないか、と考えました。(*)

英語の掲示板をざっと見ましたが、結果的には解決していても、どうも解決の手順や理屈は分かりません。

また、私の記憶にある解決方法は、Run を使わないで、別にあったような気がしてなりません。記憶違いかもしれません。*
結果オーライだから、深くは追求するつもりはありませんが。
    • good
    • 0
この回答へのお礼

ありがとうございました。
自分にとっては、理屈についてはやはり難しですね
VBS/ブック/マクロ指定起動の
「結果オーライツールコード」として捉える事にします。

お礼日時:2018/05/14 08:30

>メインBookから別インスタンスでモニタBookをマクロ有効で開く



「Excel から 別インスタンスで Excel を開く」ということは普通に出来ますけど、
何か不都合でもありましたか?
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A