【VBA】Office別アプリケーションの警告メッセージ
VBAを記述したOfficeアプリから他のOfficeアプリを操作
生きる!まだ生きています。かろうじて生きてるjimです👍
今回は、VBAを記述したOfficeアプリから、別のOfficeアプリを操作。って時に。。
「うっ💦」
となったお話。(例としてWordにVBAを記述してExcelを操作という感じで説明していきますね)
まず、何でExcel操作するのにExcelにVBAを記述しないの?ってお話ですよねぇ。。。
えっと、それは次回で。(【VBA】別OfficeアプリにVBAを記述する理由)
じゃあ、とりあえずの例えばで、Wordを開きVBEを開く。。と。。。
ただ、これだけじゃExcelを操作できません。
ツール⇒参照設定⇒
『Microsoft Excel 15.0 Object Library』にチェックを入れます。
勿論、Excel以外の別アプリを操作したい時(今回はExcelですが)、その都度そのアプリのライブラリにチェックを入れる必要があります。
これでVBEの用意は出来ました👈
別のOfficeアプリを用意
今回はExcelの操作ということで、Excelのテンプレートを用意しておきます。
その都度、workbooks.addで新規作成してもいいんですが、多分警告が出てこないっていう。。
下図のようなファイルをDドライブに用意しました。
でーん♪
ちょっとシートを削除してみますね。。。
ぺろーん♪
このメッセージを黙らせよう。
実際にコードを記述してみる
まず、警告非表示なしの場合。
以下の手順でコードを書いてみる。
1、『D:\Book1.xlsx』ってテンプレファイル開く
↓
2、左から1つめのシートを削除
↓
3、ブックを上書き保存して閉じる
Sub sakujo() Dim myBook As Workbook Dim mySheet As worksheet Set myBook = workbooks.Open("D:\Book1.xlsx") Set mySheet = myBook.Worksheets(1) mySheet.Delete myBook.Save myBook.Close End Sub
ぺろーん♪って、保存したブックをみるとシートが削除されていない。。。
(多分キャンセルされてる)
今度は、アプリを表示し警告を非表示にする。
以下の手順のコードを書いてみる。
1、『D:\Book1.xlsx』ってテンプレファイル開く
↓
2、Excelを表示させる
↓
3、Excelの警告メッセージを非表示にする
↓
4、左から1つめのシートを削除
↓
5、ブックを上書き保存して閉じる
Sub sakujo() Dim myBook As Workbook Dim mySheet As worksheet Set myBook = workbooks.Open("D:\Book1.xlsx") Set mySheet = myBook.Worksheets(1) CreateObject("Excel.Application").Visible = True CreateObject("Excel.Application").DisplayAlerts = False mySheet.Delete CreateObject("Excel.Application").DisplayAlerts = True myBook.Save myBook.Close End Subぺ
ぺろーん♪
なぜか警告メッセージが表示されます。
ExcelにVBA書いてExcel操作する時は『Application.DisplayAlerts = False』だけど、
別アプリケーションの操作なので『CreateObject(“Excel.Application").DisplayAlerts = False』みたいにキッチリとアプリ指定してやらないとけません。
↓でも、アプリ非表示のままだとエラーが出ずシートが削除されます。(要するに『2』を削る)
Sub sakujo() Dim myBook As Workbook Dim mySheet As worksheet Set myBook = workbooks.Open("D:\Book1.xlsx") Set mySheet = myBook.Worksheets(1) CreateObject("Excel.Application").DisplayAlerts = False mySheet.Delete CreateObject("Excel.Application").DisplayAlerts = True myBook.Save myBook.Close End Sub
これだとOK・・・
↓そして、今気づいたんだけど、With使ってもエラーが出ない。。。
Sub sakujo() Dim myBook As Workbook Dim mySheet As worksheet Set myBook = workbooks.Open("D:\Book1.xlsx") Set mySheet = myBook.Worksheets(1) With CreateObject("Excel.Application") .Visible = True .DisplayAlerts = False mySheet.Delete .DisplayAlerts = True End With With myBook .Save .Close End With End Sub
よく分からんね。
AccessVBA使う人は知ってるネタかも。。よくわからん。。。
んじゃ、またね🖐
ディスカッション
コメント一覧
まだ、コメントがありません