• ベストアンサー

VBAでEXCELのワークシートを削除時に警告メッセージをでないようにしたい。

ACCESSのVBAでEXCELのワークシートを削除時に警告メッセージをでないようにしたいのですが、 ネットを参考に下記のようにしたのですが、  Application.DisplayAlerts = False  ActiveSheet.Delete  Application.DisplayAlerts = True DisplayAlertsが反転してメソッドまたはデータメンバが見つかりません。とエラーメッセージがでます。 ご存知の方宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • hotosys
  • ベストアンサー率67% (97/143)
回答No.2

こんなのはどうでしょうか? Sub sample() Dim xls As Object Dim wb As Object Set xls = CreateObject("Excel.Application") 'xls.Visible = True '表示する場合 Set wb = xls.Workbooks.Open("C:\Book1.xls") xls.DisplayAlerts = False wb.sheets("Sheet1").Delete xls.DisplayAlerts = True wb.Close savechanges:=True xls.Quit Set wb = Nothing Set xls = Nothing End Sub p.s. wb.sheets("Sheet1").Delete の部分は wb.sheets(1).Delete とすれば、最初のシートになると思います。 ただし、全てのシートを削除する事は出来ないので、1シートのブック場合は、エラーになると思います。

UKUJIMA
質問者

お礼

ありがとうございます。 xls.DisplayAlerts = False エクセルの変数にDisplayAlertsをつけるのですね。

その他の回答 (2)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

Applicationは予約された組み込みオブジェクトで、Excelの場合は DisplayAlertsというプロパティがありますが、Accessのそれには 該当するプロパティはありません。よって、存在しないプロパティを 操作しようとしたので、エラーになります。 Excelのインスタンス(を持つ変数)に対して.DisplayAlertsを記述 してください。

UKUJIMA
質問者

お礼

ありがとうございます。 Application.DisplayAlerts = False Excelのインスタンス(を持つ変数)につけたらできました。 Wb.Application.DisplayAlerts = False

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

こんにちは、アクセスから、どうやって エクセルを呼び出しているのですか そこに、答えが、あると思います。

関連するQ&A

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

  • VBA シートの名前が重複するときに すでにある方を削除する

    VBA シートの名前が重複するときに すでにある方を削除する よろしくお願いします。 エクセル2003を使っています。 「入力シート 」をコピーして「DB」という名前をつける。 すでに「DB]シートがあれば「DB」シートを削除する。 その時に、もし「集計」シートと「名簿」シートがあれば一緒に削除する というコードを考えています。 集計シートや名簿シートはない場合もありますので、最初からdeleteにするとエラーになります。 どうぞお知恵をお貸しください。 sub シートの挿入と削除 () Worksheets("入力シート").Activate ActiveSheet.Copy After:=ActiveSheet On Error Resume Next 'エラーが発生しても続行 ActiveSheet.Name = "DB" If Err.Number = 1004 Then Application.DisplayAlerts = False '警告メッセージを表示しない Sheets("DB").Delete Application.DisplayAlerts = True ActiveSheet.Name = "DB" End Sub End If

  • Excel VBAでオートメーションエラーがでる

    いつもお世話になっております。 Sheets("修正シート").Select Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True Sheets("箇所見る").Select Range("A1").Select 上記のところで実行エラー オートメーションエラーです。 とメッセージがでます。 何がいけないのでしょうか? よろしくお願い致します。

  • INPUT関数で入力した日付でワークシートとセルに値をいれる。

    こんにちは、最近VBAを勉強し始めたのですが、 躓いてしまいました。 すでにあるワークシートからINPUT関数で”20101016”を入力して ワークシートをコピー(シート名は”20101016”)する事はできたのですが このシートに”2010年 10月 16日 (曜日)”を表示する事ができないのです。 指定したセルには”20101016”が入っているのですが 表示が"###################”になってしまいます。 (”負の日付又は時間は###の表示になります。”の意味がわかりません。) 書式設定で日付等をいじっても変化がありません。 どなたか、ご教示願います。 Sub 新規シート() Dim tuki As String ActiveSheet.Copy after:=ActiveSheet   'アクティブシートの後ろへコピーを作る。 Range("a46:r57").Select   'コピー元の値を削除 Selection.ClearContents Range("a1").Select tuki = InputBox("日付を半角英数字で入力してください。" & Chr(13) & _ "yyyymmdd 形式で入れてね!", "日付入力")   'tukiに8桁を入力 If tuki = "" Then Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True   '入力が無い場合、作成したシートを削除 Else On Error Resume Next ActiveSheet.Name = tuki   '新規ワークシート名に”tuki”を代入 Range("d6").Value = tuki  ’ここが問題! If Err.Number = 1004 Then MsgBox "日付が重複しています。" Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True   'シート名が重複した場合、警告後に削除 End If End If End Sub

  • VBA2003: 選択された複数シートを削除したい

    複数のワークシートを選択した状態で、次のマクロを動かすと1つのシートしか削除されません。 選択した全てのワークシートを削除したいのですが、コードのどこが間違っているのでしょうか。 Sub TOOL1() Dim objWs As Worksheet Application.DisplayAlerts = False For Each objWs In ActiveWindow.SelectedSheets objWs.Delete Next Application.DisplayAlerts = True End Sub

  • VBA 選択したセルが空白であったらシートを削除

    こんばんは!いつもお世話になっています。 選択したシート1のセル(C9)が空白であったら、選択したシートを削除するマクロ(VBA)を作りましたが、上手く作動しなくて困っています。 どうしたらよいのかよろしくお願い致します。 'シート1のセルC9を選択し、空白か判断する Sub セルの選択()   Worksheets("Sheet1").Activate   Range("C9").Select  If Len(Application.Trim(ActiveCell)) = 0 Then   MsgBox("空白セル")  End If End Sub '現在アクティブなシートを削除する Sub DeleteWorksheet() Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End Sub

  • エクセルVBAでワークシート削除

    ブックの中にある、表示されているシートで、たとえば図表1~図表4(何番まであるかは不定です)という名前のシートを削除するVBAを作りました。ただの「図表」という名前のシートや、「何々図表」、「図表集計」等のシートは削除しません。 Sub 保存図表削除() Dim SN As String For Each sh In Worksheets SN = sh.Name If sh.Visible And IsNumeric(Mid(SN, 3, Len(SN) - 2)) And Left(SN, 2) = "図表" Then ans = MsgBox(SN & "を削除してよい?", vbYesNo) If ans = vbYes Then Application.DisplayAlerts = False sh.Delete Application.DisplayAlerts = True End If End If Next End Sub これでうまく作動するのですが、いちいちシートごとに削除の有無を聞かずに、削除するシート名をまとめて表示し、それらを削除するかしないかを聞くにはどうすればよいでしょうか? 「図表1,2,3,4があります。これらを削除しますか?」というような感じです。

  • EXCELの変数を使用したシート削除マクロについて

    ご教示お願いします。。。 シートAのセルA1に”1111”と入力します。 シート追加マクロを作成し、1111というシートを追加することまではできましたが、 今度はシート削除マクロを作成し、同じく、”1111”のシートを削除しようと思います。 セルA1は都度変わるので、変数を指定し、その変数を使用して削除マクロを作成。 <既に1111シートはあるものと仮定します。> X = Range("A1") '---(1)XにA1セルに入力された数値をセット(1111がセットされる) Application.DisplayAlerts = False '---(2)(削除)確認メッセージをOFF Worksheets(X).Select        '---(3)ワークシートX(X=1111)を選択 ActiveSheet.Delete        '---(4)選択したワークシートを削除 Application.DisplayAlerts = True '---(5)(削除)確認メッセージをONに戻す。 Worksheets("Sheet1").Select    '---(6)ワークシートSheet1を選択して終わり。 上記のマクロを作成し実行すると、(3)で【実行時エラー’9’:インデックスが有効範囲にありません。】 のエラーメッセージがでます。 変数を使用せずに、直接[Worksheets("1111").Select]を明記すると問題なく通ります。 意味が分からず・・・。 変数の指定方法に間違いがあるのでしょうか? お詳しい方がいらっしゃいましたら、ご教示の程よろしくお願いします。。。

  • Access VBAからExcelシートの削除

    お世話になります。 Access VBA から指定したExcelシートの削除を行うプログラムを下記の通りに記載しています。 Set oApp = CreateObject("Excel.Application") oApp.Workbooks.Open FileName:="エクセル.xls" oApp.DisplayAlerts = False oApp.Sheets("シート名1").Delete oApp.DisplayAlerts = True この場合において、"シート名1"が存在していれば問題なく処理されますが、 このシートが存在していなければエラーが起きます。 指定したExcelブックにこのシートが存在するかどうかのチェックを事前に行い、 存在する場合のみ削除処理を行うにはどうすればよいでしょうか? よろしくお願いします。 環境は、Access2007です。

  • VBAで別ブックのシートを指定して削除したい。

    VBAで別ブックのシートを指定して削除したい。 エクセルでVBAを使用して、別ブックのシートを削除するアプリを作成しています。 これらのマクロを記述するエクセルとは別ブックのシートを削除したいです。 以下の記述だと、削除がされないようなのですがどのように記載したら 別ブックのシートを削除することが可能でしょうか。 エラー等は出ません。また、別ブックの情報も取ってこれているようですが、 削除ができません。。 どなたか教えてください。 'Excelを起動し、ファイルを開く Set xl = CreateObject("Excel.application") xl.Workbooks.Open fileName:=fileFullPath, ReadOnly:=False, IgnoreReadOnlyRecommended:=True '※fileFullPathがオープンするエクセルファイルです。 '"一覧"シートの1列目に「公開時削除」という文字が入っている行の2列目のテーブル名を取得 'シートの削除 Application.DisplayAlerts = False xl.ActiveWorkbook.Worksheets(deleteTableName).Delete   Application.DisplayAlerts = True   '※deleteTableNameは削除したいシートの名前が入ります。

専門家に質問してみよう