- PR -

ASP.NETでExcelマクロの起動について

投稿者投稿内容
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-01-14 16:11
じゃんぬねっと様、渋木宏明(ひどり)様
ありがとうございます。

じゃんぬねっと様
大変申し訳ありません、以下のようにCatchを入れると
←☆の箇所で「xlBookが宣言されていません」となります。
すみません、基本的なことをお聞きしていると思います。


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

渋木宏明(ひどり)様

対象のExcelファイルはマシン名\\IUSR_マシン名に権限があります。
ちなみに現在、IIS,VSNETをインストールしたサーバーで
開発、テスト行っており、マシン起動時はAdministaratorで
ログインしています。この点私のほうで誤りがあるでしょうか?

大変お手数をお掛けしますがどうぞよろしくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-14 16:59
引用:

achiさんの書き込み (2006-01-14 16:11) より:

大変申し訳ありません、以下のようにCatchを入れると
「xlBookが宣言されていません」となります。


それは、Catch を入れるべき場所を誤ってるからですね。
Try 〜 Finally ネスト (入れ子) していますよね?

差し込むべき場所はそんな上ではありません。
Try 〜 Finally のインデントと合わせてください。

どういう順番に並んでいるかを考えてみてください。(1 - 2 - 3 - 3 - 2 - 1)

Try1
  Try2
    Try3

    Finally3
  Finally2
Finally1

引用:

開発、テスト行っており、マシン起動時はAdministaratorで
ログインしています。この点私のほうで誤りがあるでしょうか?


それプラス、DCOMCNFG などの設定ですね。
少し検索してみてください。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-01-14 19:44
じゃんぬねっと様

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

とりあえずOPENの検証だけでもと

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

Dim xlApp As Excel.Application

xlApp = New Excel.Application
xlApp.Visible = True

Dim xlBooks As Excel.Workbooks = xlApp.Workbooks

Try
Dim xlBook As Excel.Workbook = xlBooks.Open("C:\moto.xls")
Catch ex As Exception
Console.WriteLine(ex.ToString())
End Try
xlApp.Run("Auto_Open")
End Sub

としたのですがOPENで止まってしまいます。
Catchにいかない?
ようです。

DCOMCNFGをいろいろいじってるうちに
今度はASP.NET State Serviceが起動しなくなってしまいました

VSNETを起動すると
以下のURL ・・・にあるWebプロジェクトを作成するか、開こうとして、
以下のエラーが発生しました。'HTTP/1.1 500 Internal Server Error'
なるメッセージが表示されます。
ちなみにどのプロジェクトを開こうとしてもこのエラーが出ます。
たぶん、ASP.NET State Serviceが起動していないせい?
なんでしょうね。

DCOMCNFGは
Excelアプリケーションのプロパティで
セキュリティタグにて
・既定のアクセス許可を使う
・独自の起動アクセス許可を使う
 →ASPNETやIUSR_マシン名に起動許可を与えています
・独自の構成アクセス許可を使う
 デフォルトがこうなっていました
 一応?ASPNETを含めました

上記の不具合?により
現在イベントビューアのアプリケーションログには
aspnet_wp.exeが起動できていないことや
システムログにASP.NET State Serviceが開始できていない旨の
メッセージが出力されています。

・・・なんかぐちゃぐちゃになってきました

過去ログを参考に治していきたいと思いますが
何かお気づきの点がありましたら
どうぞよろしくお願い致します。


じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-14 20:17
引用:

achiさんの書き込み (2006-01-14 19:44) より:

過去ログを参考に治していきたいと思いますが
何かお気づきの点がありましたらどうぞよろしくお願い致します。


何か微妙にすいません。
私のせいみたいなものですね。(*_ _)

  ASP.NET IIS 登録ツール

今回は -r オプションだと思います。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-01-14 21:27
じゃんぬねっと様

ありがとうございます、-r オプションでとりあえず
イベントログ、ASP.NET State service、VSNET等
元に戻りました。

ExcelのOPENは引き続き検証しております。
Web.configで偽装する場合、
DCOMCNFGのExcelアプリケーションは
マシン名\IUSR_マシン名を使用。
と思っているのですが・・・。

achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-01-15 07:37
その後状況変わらずですが
いろいろ確認しながらやっているうちに
以下のエラーが表示されるようになりました。

'System.UnauthorizedAccessException' の初回例外が mscorlib.dll で発生しました。
追加情報 : パス "WebApplication2.dll" へのアクセスが拒否されました。

'System.UnauthorizedAccessException' の初回例外が mscorlib.dll で発生しました。
追加情報 : パス "WebApplication2.PDB" へのアクセスが拒否されました。

過去ログを元に以下の内容も取得してみました参考になりますでしょうか。
Server.MapPath: c:\inetpub\wwwroot\WebApplication2\
System.Threading.Thread.CurrentPrincipal.Identity.Name: 空白
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-01-15 09:05
引用:

achiさんの書き込み (2006-01-15 07:37) より:

いろいろ確認しながらやっているうちに
以下のエラーが表示されるようになりました。


とりあえず、このあたりを読んでみてください。(^^;)ちょっと、どこまで設定がなされているのかが見えないです。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
achi
会議室デビュー日: 2006/01/08
投稿数: 17
投稿日時: 2006-01-18 05:32
じゃんぬねっと様

返信遅くなりすみません。
また、いろいろ教えて頂きましてありがとうございました。

その後、結果的に以下の方法で対応できましたことを
ご報告差し上げます。
288366 - [HOWTO] 対話型ユーザー アカウントで実行するように Office アプリケーションを構成する方法
http://support.microsoft.com/default.aspx?scid=kb;JA;288366

ただ、今回いろいろいじっているので
”この方法で解決できました”といいきれなく(自信がなく)
あらたな機会にサーバーインストールから順を追って
確認していきたいと思います。
その際、今回頂きました内容をまた参考にさせて頂きたいと思います。

本当にどうもありがとうございました。

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