- - PR -
ASP.NETでExcelマクロの起動について
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-01-14 10:18
いつもお世話になります。
ASP.NETでWebフォームからExcelのマクロ付きファイルを 起動するアプリを作っているのですがエラーが発生するため ご教授頂きたく書き込みさせて頂きました。 Excelの起動に関してはたくさんの書き込みがあり 参考にさせて頂いているのですが以下のロジックで OPENする際にエラーが発生します。 エラーメッセージは表示されないのですが タスクマネージャでEXCEL.EXEが残ってしまうのは 確認しています。 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim xlApp As Excel.Application Try xlApp = New Excel.Application xlApp.DisplayAlerts = False xlApp.Visible = True Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Try '----<この後エラーが発生します>---------------------------------------------- Dim xlBook As Excel.Workbook = xlBooks.Open("C:\\\\moto.xls") '---------------------------------------------------------------------------- Try xlApp.Run("Auto_Open") 'xlApp.Run("Sheet_02.Auto_Open") Finally If Not xlBook Is Nothing Then Try xlBook.Close() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) End Try End If End Try Finally If Not xlBooks Is Nothing Then Try xlBooks.Close() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) End Try End If End Try Finally If Not xlApp Is Nothing Then Try xlApp.Quit() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) End Try End If End Try End Sub End Class VS.NETよりブレークポイントを設定し実行 1行ずつ処理した結果OPENでエラーになっています。 また、それ以降のステップに行くことはありません。 タスクマネージャーに残っていることにより? 他のマクロ付きファイルを開くとExcelが異常終了します。 したいことは Excelを起動し、マクロを実行、マクロにより作られたシート をWebファイル(.htm)で保存したいと思っています。 htmファイルを作り出すところまではExcel単体で 確認できるため完了しております。 ボタンクリック→OPENしてエラーが発生(ビープ音が2回) 再度ボタンのある画面が表示されます。(再表示ではありません) WEBCONFIGは <identity impersonate="true" /> </system.web> としております。 また、DCOMCNFGのExcelアプリケーションにて 識別タグで、マシン名\\\\IUSR_マシン名を 実行ユーザーアカウントとしました。 当然のこと?ながらその後他のEXCELファイルを 開くと「現在OLEは使用できません」と表示されます。 (でも、ファイルは開きますが) 上記の次第であります。 お手数ですが何卒ご教授よろしくお願い致します。 | ||||||||
|
投稿日時: 2006-01-14 10:36
どうも、いつも Excel というか COM ネタに反応する、じゃんぬ です。
エラーというか、例外が発生するのは判りました。 発生している例外は COMException ですか? 詳細を見たいので、例外のインスタンスの詳細をください。 ToString メソッドの結果で良いです。 マクロ実行となると、Excel 自体のセキュリティも落とす必要がありますが、 これのせいじゃないかと予想しています。 確認のため、DisplayAlerts = False を一旦、コメントアウトしてみてください。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-14 11:35
じゃんぬねっと様、すみません、度々お世話になります。
DisplayAlerts = False をコメントアウトにして 再度処理しましたが同事象です。 また、 ------------------------------------------------------ 詳細を見たいので、例外のインスタンスの詳細をください。 ToString メソッドの結果で良いです。 ------------------------------------------------------ これについてどうすればよいのかが 分かりません。すみません。 お手数ですが方法を教えて頂けますでしょうか。 どうぞよろしくお願い致します。 | ||||||||
|
投稿日時: 2006-01-14 11:57
基本的な構文なので覚えておいた方が良いです。
COMException (HRESULT の例外) だろうとは思いますが、 確認のためにスタック トレースなどが欲しいのです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-14 12:25
によって決定されるアカウント(=この場合は多分ブラウザでWebサーバにアクセスしているドメインユーザアカウント)は
の Excel ワークブックに対するアクセス権を持っているでしょうか? | ||||||||
|
投稿日時: 2006-01-14 13:37
あ、そっか。 Open の時なら、そっちの方が濃厚ですね。(^^;) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-01-14 15:00
で、その後問題になるのが、じゃんぬさんが指摘しているような様々です。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2006-01-14 16:04
じゃんぬねっと様、渋木宏明(ひどり)様
ありがとうございます。 じゃんぬねっと様 大変申し訳ありません、以下のようにCatchを入れると Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Dim xlApp As Excel.Application Try xlApp = New Excel.Application 'xlApp.DisplayAlerts = False xlApp.Visible = True Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Try 'Dim xlBook As Excel.Workbook = xlBooks.Open("C:\Inetpub\wwwroot\ExcelADO\moto.xls") Dim xlBook As Excel.Workbook = xlBooks.Open("C:\moto.xls") Catch ex As Exception Console.WriteLine(ex.ToString()) Try xlApp.Run("Auto_Open") 'xlApp.Run("Sheet_02.Auto_Open") Finally If Not xlBook Is Nothing Then Try xlBook.Close() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBook) End Try End If End Try Finally If Not xlBooks Is Nothing Then Try xlBooks.Close() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlBooks) End Try End If End Try Finally If Not xlApp Is Nothing Then Try xlApp.Quit() Finally System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp) End Try End If End Try End Sub End Class |
1|2|3
次のページへ»