- PR -

Excelシートの削除

1
投稿者投稿内容
Astaroth
会議室デビュー日: 2003/03/12
投稿数: 9
投稿日時: 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
Astaroth
会議室デビュー日: 2003/03/12
投稿数: 9
投稿日時: 2003-03-12 18:17
書き忘れました。

シート内の全行列選択を行い「見た目削除」も可能でしたが、これをした場合は
プレビューモード表示した時に、「見た目削除」以前に書き込んでいた行列までが
プレビュー表示されてしまい、また、「見た目削除」以前の行列に書き込まれて
いた内容が非常に多いと、処理にも時間がかかってしまうのでなんとかならないかな
と思った次第です。
mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 2003-03-12 21:38
エラーの内容は何でしょうか?
とりあえず
oBook.Parent.DisplayAlerts = False
でもダメでしょうか?
Astaroth
会議室デビュー日: 2003/03/12
投稿数: 9
投稿日時: 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


引用:

mitoさんの書き込み (2003-03-12 21:38) より:
エラーの内容は何でしょうか?
とりあえず
oBook.Parent.DisplayAlerts = False
でもダメでしょうか?

mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 2003-03-13 15:42
WebBrowserコントロールをどうやって実装するかに迷って遅くなりました。
(ヘルプに載ってないの!!)
結果的にバグみたいなバグじゃないような・・・

確かに上記コードでは変更できませんでした。
エラーの詳細も分からないし(怒)。
しかしWebBrowserコントロールのSilentプロパティをTrueにしたら、
DisplayAlertsをFalseにしなくても、煩いメッセージは表示しなくなりました。
&シートも削除できました。
結果的にこれでよろしいのかと思いますがどうでしょうか。
Astaroth
会議室デビュー日: 2003/03/12
投稿数: 9
投稿日時: 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)でやってます。」
という事ぐらいですか・・・。
mito
ベテラン
会議室デビュー日: 2002/05/17
投稿数: 50
投稿日時: 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をはずすとちゃんと警告メッセージが表示されます。
何が違うんだろう?
Astaroth
会議室デビュー日: 2003/03/12
投稿数: 9
投稿日時: 2003-03-18 18:33
返事が遅くなってしまい、申し訳ないです。
他の開発者のマシンでも試してもらいましたが、結局分からず終いでした。
見た目削除方式になってしまいました。

ちなみに、他のExcelプロパティも色々と設定できない所があったので、
なんとか他の方法で逃げるようにしました。(実に不本意!)

色々やってもらってすみませんでした。
納期が近いのでこのまま行きますが、また時間があった時に見てみます。
どうもありがとうございました。

引用:

mitoさんの書き込み (2003-03-13 17:45) より:

環境はWindows2000ProSp3にVS.NETをインストールしただけです。
SPなど一切当てていません。IEもVS.NETを入れたときに勝手にアップグレードされました。
OfficeはExcel2000SR1です。
ちなみにSilentをはずすとちゃんと警告メッセージが表示されます。
何が違うんだろう?


1

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