- PR -

VB.NETでマクロを含んだXLTの起動時にエラーがでます!

1
投稿者投稿内容
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2004-07-22 16:03
お世話さまです。

VB.NET(VS.NET2003)でCSVファイルをカレントフォルダに出力し、
そのCSVを読んで作表するマクロを実装したXLTを起動させているのですが、
EXCELシートの展開後に「HRESULTからの例外です:0x800A9C68。」
というメッセージボックスのエラー表示が出て、「OK」ボタンを押下すると
アプリケーションが終了してしまいます。

コードは下記のようになっています。

Dim current_folder As String
Dim iExcel As Object

'カレントフォルダの取得
current_folder = System.IO.Directory.GetCurrentDirectory

Try
  iExcel = CreateObject("Excel.Application")
  iExcel.application.visible = True
  iExcel.displayalerts = True
  iExcel.application.workbooks.open(fileName:=current_folder & "\\\\\\\\test.xlt")
  iExcel.application.run("Auto_Open")
Catch ex As Exception
  MsgBox(ex.Message)
End Try

トレースをかけてみたところ、application.runの行でこのエラーが
でているようです。

もう1つ気になっているのが、EXCELのセキュリティレベルは中(警告する)
になているのに警告が出ないで作表されてしまうので、
iExcel.displayalerts = True
として警告を表示しているツモリなのですが、表示されていません。

EXCEL自体はきちんと作表されているのでこのエラーさえ
回避できればなんとか次のステップに進めて助かるのですが…

どなたかご教示のほど宜しくお願い致します。
moondog
大ベテラン
会議室デビュー日: 2003/04/11
投稿数: 165
投稿日時: 2004-08-06 17:05
実はあれから起動しているExcelのテンプレートのマクロのプロシジャに
メッセージ文を入れてトレースをかけてみて判ったのですが、
どうやらAuto_Openプロシジャの最後でブック自体を閉じる部分(下記参照)で
当該エラーを出しているようです。

==========================
Sub Auto_Open()



  If gBook_Name <> "" Then
    Application.CutCopyMode = False
    Windows(gBook_Name).Close saveChanges:=False
  End If
End Sub
==========================

この部分をコメントアウトするとエラーは出なくなったのですが、
当然の如くブック(test.xlt)が開いたままになります。

Book1の保存の有無はユーザの判断に任せ、このtest.xltのみVB側から
閉じたいのですが、どのようにすれば実装可能でしょうか?

ご教示頂けると助かります。m()m
1

スキルアップ/キャリアアップ(JOB@IT)