C#アプリケーション(デスクトップ)からのExcel内部のVBA実行エラー

Anonymous
2019-03-18T05:00:49+00:00

【事象】

特定のOS・実行環境において、

C#アプリケーション(デスクトップ)からExcel内部のVBAを実行した際に

エラーとなる場合がある。

<事象1>

上記事象において、VBAを実行時

C#アプリケーション側で以下のエラーが出力される。

エラーコード:0x800706BA

エラーメッセージ:RPC サーバーを利用できませんでした。

→VBA側ではエラー出力がされませんでした

(Err.Number、Err.Description による出力)。

<事象2>

上記事象において、VBAを実行時

VBA側で以下のエラーが出力される。

Err.Number:1004

Err.Description:Window クラスの FreezePanes プロパティを設定できません。

○処理概要

C#からのVBA呼び出しは、以下の関数を使用しています。

https://docs.microsoft.com/ja-jp/dotnet/api/system.type.invokemember?view=netframework-4.7.2

VBA側の処理をデバッグ実行しても、エラーとなる箇所が不定。

デバッグ実行せず、普通に流すとエラーになっても、デバッグで

ステップ実行するとエラーにならず処理が通ってしまうなど。

事象1、事象2とあるように、Excelの状態によって

エラー内容が変化しているのかも掴めておりません。

【システム要件】

各システム要件は以下の通りです。

〇VBA起動側アプリケーション

言語:C#(3.0)

フレームワーク:.Net FrameWork 3.5

開発環境:Visual Studio 2008

ターゲット・プラットフォーム:x86

〇Excel・実行OS環境

Excel保存ファイル形式:xls(Excel97-2003ブック)

・動作OK環境

動作実施Excelバージョン:Excel 2013 MSO(15.0.5111.1000) 32bit

OS:Windows 7 Pro 32bit

OS バージョン:6.1

OS ビルドバージョン:7601

・動作NG環境

動作実施Excelバージョン:Excel 2016 MSO(16.0.9126.2259) 64bit

OS:Windows 10 Pro 64bit

OS バージョン:1709

OS ビルドバージョン:16299.rs3_release.170928-1534

【検証事項】

・"Windowsで通常使うプリンターを管理する"の設定をOFF

https://cross.tokyo/2016/11/11/post-1363/

→ 同類の障害らしきものとみて実施するも、動作検証NG

・EXCEL・VBAソースにログ出力用の処理を記載

EXCEL単独起動・実行、アプリケーションからの起動・実行が確認出来ている

OS・環境下で、エラーとなっているVBAにログ出力を行う処理を追記。

具体的には以下のような記載を挿入して実施。

テキストファイルへのログ出力

------ プログラム記載・例 ------

Public objFso As Object

Public TextFile As Object

Set objFso = CreateObject("Scripting.FileSystemObject")

Set TextFile = objFso.OpenTextFile(ThisWorkbook.Path & "\test.log", 8)

TextFile.WriteLine Now & vbTab & "××処理 開始"


→ 動作検証OK

検証用のログを挿入したのみで、現象が発生しなくなってしまった。

特定のOS環境で発生しており、またエラーに関しても上記の通り、

不定な部分、直接的な影響の無さそうな処理を入れることによって

事象が発生しなくなるなど、不安定なものとなっています。

長文になりましたが、

同類の障害として、思い当たる事象、解決方法などがありましたら

ご教授頂きたいです。

どうぞ、宜しくお願いいたします。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

2 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2019-03-20T01:08:21+00:00

    藤田 香 様

    お世話になります。

    ご返信ありがとうございます。

    >今回のご質問内容であれば、開発者の方々が多く利用されている MSDN フォーラムの VBA のカテゴリに投稿してみるとアドバイスや関連情報が寄せられやすくなると思います。

    承知しました、上記フォーラムの方でも

    ご質問させて頂きたいと思います。

    また、何かありましたら

    ご質問させて頂きます。

    以上、宜しくお願いいたします。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  2. Anonymous
    2019-03-19T00:55:15+00:00

    ​哲史堀内 さん、こんにちは。

    マイクロソフト コミュニティをご利用いただき、ありがとうございます。

    何か参考になるような情報がないかお調べしたのですが、ご紹介できそうな有力な情報が見つかりませんでした。

    VBA が関連するような場合、一般向けのこのマイクロソフト コミュニティでは該当するカテゴリがないため、情報が集まりにくいかもしれません。

    今回のご質問内容であれば、開発者の方々が多く利用されている MSDN フォーラムの VBA のカテゴリに投稿してみるとアドバイスや関連情報が寄せられやすくなると思います。

    MSDNフォーラム - Visual Basic for Application(VBA)

    よければそちらを利用してみてくださいね。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません