- - PR -
Excelシートの削除
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-03-12 17:54
はじめまして。
早速質問ですが、Web Browser内にExcelシートを表示させている状態で、シート削除時 ボタン押下時(左端のシートを削除します)の処理内で、シート削除時の確認ダイアログ を表示させないように(Excelのプロパティ「DisplayAlerts」を使用)しようと試みて いるのですが、何故かこのコードでエラーが出てしまいます。 デバッグモードでこのプロパティの値を直接変更しようと思っても、値を変更できない というダイアログが返ってきてしまいました。 質問事項 1.下記ソース内で、参照しているプロパティ等が間違っているから設定出来ない のでしょうか?(悪ければご指摘下さい) 2.このプロパティの値を変更可能にする方法が、何かあるのでしょうか? (環境の設定等) 3.もしなければ、代替方法はあるのでしょうか?あれば教えて下さい。 以下、ソースです Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.AxWebBrowser1.Navigate("sample.xls") End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim oBook As Excel.Workbook Dim oSheet As Excel.Worksheet oBook = Me.AxWebBrowser1.Document oSheet = oBook.Sheets(1) oBook.Application.DisplayAlerts = False oSheet.Delete() oBook.Application.DisplayAlerts = True End Sub | ||||
|
投稿日時: 2003-03-12 18:17
書き忘れました。
シート内の全行列選択を行い「見た目削除」も可能でしたが、これをした場合は プレビューモード表示した時に、「見た目削除」以前に書き込んでいた行列までが プレビュー表示されてしまい、また、「見た目削除」以前の行列に書き込まれて いた内容が非常に多いと、処理にも時間がかかってしまうのでなんとかならないかな と思った次第です。 | ||||
|
投稿日時: 2003-03-12 21:38
エラーの内容は何でしょうか?
とりあえず oBook.Parent.DisplayAlerts = False でもダメでしょうか? | ||||
|
投稿日時: 2003-03-13 10:56
mitoさん、返答ありがとうございます。
エラーダイアログの内容は、 >'System.Runtime.InteropServices.COMException' のハンドルされていない例外が >microsoft.visualbasic.dll で発生しました。 >追加情報 : Application クラスの DisplayAlerts プロパティを設定できません。 というものでした。 中断してウォッチ式に問題になっているプロパティを代入し、値を変更しようと した時のエラーダイアログの内容は、 >この変数の値は変更できませんでした。 >編集を続行しますか? でした。 mitoさんの指摘通り、Application→Parentに変更してみましたが、現象は 変わらずでした。ウォッチ式に変更後のプロパティを入れてみて直接変更しよう とした時には、エラーダイアログは出ずに、強制的に元の値に戻ってしまいます。 ・・・環境書き忘れです(汗 Windows2000(SP-3) Office2000(SR-1) VB.NET
| ||||
|
投稿日時: 2003-03-13 15:42
WebBrowserコントロールをどうやって実装するかに迷って遅くなりました。
(ヘルプに載ってないの!!) 結果的にバグみたいなバグじゃないような・・・ 確かに上記コードでは変更できませんでした。 エラーの詳細も分からないし(怒)。 しかしWebBrowserコントロールのSilentプロパティをTrueにしたら、 DisplayAlertsをFalseにしなくても、煩いメッセージは表示しなくなりました。 &シートも削除できました。 結果的にこれでよろしいのかと思いますがどうでしょうか。 | ||||
|
投稿日時: 2003-03-13 16:58
mitoさん、またまたお返事ありがとうございます。
シート削除のロジック前後を、 Me.AxWebBrowser1.Silent = True oSheet.Delete() Me.AxWebBrowser1.Silent = False に書き換えて実行してみました。が、確認ダイアログが出てしまいました。 Silent = True に設定した直後のプロパティを見ると、Trueになっていたので 変更は出来ていました。あと、デザイン上で直接プロパティの値をTrueにして みたのですが、結果は同じでした。 ・・・何でなんだろう。 思い当たるフシとしては、あるのかどうか知らない&多分関係ない事だと思いますが、 ・「ActiveXのWeb Browser(AxSHDocVw.AxWebBrowser)でやってます。」 (ActiveX以外のWeb Browserがあるかどうかは知りません。) ・「IEのバージョンは6.0(SP-1)でやってます。」 という事ぐらいですか・・・。 | ||||
|
投稿日時: 2003-03-13 17:45
WebBrowserコントロールは
ツールメニュー>ツールボックスのカスタマイズでMicrosoft Web Browserをチェックしてツールボックスからフォームに挿入しました。 利用コードは以下のとおりで、コントロールはデフォルトのプロパティのままです。 最初のころExcelへの参照を設定していたのですが、後で参照は削除しました。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim objBook As Object ' Excel.Workbook 'Dim objExcel As Excel.Application Dim objSheet As Object ' Excel.Worksheet objBook = Me.AxWebBrowser1.Document 'objExcel = objBook.Application Me.AxWebBrowser1.Silent = True 'objExcel.DisplayAlerts = 0 objSheet = objBook.Sheets(2) objSheet.Delete() Me.AxWebBrowser1.Silent = False 'objExcel.DisplayAlerts = 1 End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click AxWebBrowser1.Navigate("D:\temp\test.xls") End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click AxWebBrowser1.Navigate("about:blank") End Sub 環境はWindows2000ProSp3にVS.NETをインストールしただけです。 SPなど一切当てていません。IEもVS.NETを入れたときに勝手にアップグレードされました。 OfficeはExcel2000SR1です。 ちなみにSilentをはずすとちゃんと警告メッセージが表示されます。 何が違うんだろう? | ||||
|
投稿日時: 2003-03-18 18:33
返事が遅くなってしまい、申し訳ないです。
他の開発者のマシンでも試してもらいましたが、結局分からず終いでした。 見た目削除方式になってしまいました。 ちなみに、他のExcelプロパティも色々と設定できない所があったので、 なんとか他の方法で逃げるようにしました。(実に不本意!) 色々やってもらってすみませんでした。 納期が近いのでこのまま行きますが、また時間があった時に見てみます。 どうもありがとうございました。
|
1