• ベストアンサー

エクセルVBAについて

今、エクセルVBAでマクロの作成を行っています マクロの中で、作業用に別なエクセルとシートを作成したのですが マクロの最後でその作業用のエクセルとシートを削除する用にしました。 その際に、エクセルがメッセージボックスが開き 『このエクセルブックを閉じますか』や『このシートを削除してよろしいですか』などと聞いてきます。 このボックスを出さないように強制的に消すことは出来ないのでしょうか? 出来るのであれば、やり方を教えてください。

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

  • ベストアンサー
  • vbafriend
  • ベストアンサー率47% (17/36)
回答No.4

初めまして。サンプルマクロを組んでみました。参考にしてみて下さい。 Sub Test Application.DisplayAlerts = False workbooks("作業用に用意したブック名.xls").close SaveChanges:=FAlse workbooks("削除したいシートがあるブック名.xls").worksheets("削除したいシート名").delete Application.DisplayAlerts = True End Sub これで、メッセージを出さずにブックも保存せず終了できますし、シートも削除されると思います。お試しになってみて下さい。 もし、何かございましたらご遠慮なく補足要求をして下さい。

semujyu
質問者

お礼

いえ、十分ですありがとうございます なぞが解けました^^

その他の回答 (3)

  • ruburubu
  • ベストアンサー率48% (15/31)
回答No.3

シートの削除については、No.1の方のやり方で良いようです。 ヘルプより 次の使用例は、確認のダイアログ ボックスを表示しないで、作業中のブックのシート 3 を削除します。 Application.DisplayAlerts = False Worksheets("Sheet3").Delete Application.DisplayAlerts = True

semujyu
質問者

お礼

ありがとうございます そういうことだったんですね^^

  • ruburubu
  • ベストアンサー率48% (15/31)
回答No.2

Closeメソッドで、SaveChanges = Trueにすれば良いのでは。 新規ブックを開いて、適当に書き込みしたあと、閉じる例 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2002/11/22 ユーザー名 : ' ' Workbooks.Add ActiveCell.FormulaR1C1 = "aaa" ActiveWindow.Close (SaveChanges = True) End Sub

semujyu
質問者

お礼

ありがとうございます^^ エクセルブックを閉じることはできました あとは、シートの削除なんですが・・・ なにかありませんかね^^

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんにちは。 Application.DisplayAlerts = False '処理 Application.DisplayAlerts = True のようにします。 処理が終わったら必ずTrueに戻しましょう。

semujyu
質問者

お礼

回答ありがとうございます^^

関連するQ&A

  • エクセル VBA シート見出し色の参照について

    エクセルVBAでブック内のシート見出し色が赤のものだけ全てを 印刷し、なければ、”印刷対象はありません”とメッセージを1回だけ出すマクロを作成したいのですが、どのようなモジュールを作成すればいいかわかりません。 教えていただけますでしょうか。

  • エクセルVBA初心者です

    参考書籍を教えてください 質問1 会社でエクセルマクロを使う機会が増えました。大抵のことはマクロの記録で対応してますが、細かいファイル操作が出来ません。VBAを勉強する必要があると思ってます。何か良い参考書はありませんか? 質問2 ブックAでマクロAを作りました。マクロAの中で、ブックBのマクロBを実行させてます。マクロBは、計算結果としてブックB上に新シートを作成し、終了します。その後、マクロAに戻りブックBの新シート上のセル2個を選択しコピーし、ブックAにてペーストさせようとしてます。 マクロAはブックA上で「マクロの記録」で作成しました。 実行させると、マクロBの終了時点でストップするようです。 何がマズイのでしょうか?

  • EXCEL VBA プログラミング

    EXCEL VBAについて教えて下さい。 プログラミング超初心者です。 book1でマクロを実行し、ダイアログボックスを表示させて、任意のファイル(book2)を開き、book1のsheet1をまるごとbook 2の末尾にコピーするという処理をしたいのですが、うまくマクロが組めません。 ダイアログボックス表示→ファイルの選択まではいけたのですが、その先で苦戦しています。。 ご存知の方、マクロの組み方をご教示いただけますでしょうか。 よろしくお願い致します。

  • エクセルVBAでテキストボックスの値の取得と変更について

    エクセルのVBAを使ってシート上のテキストボックスのテキストを取得・変更するマクロを作成したいと思っていますがうまく行きませんので、お知恵を拝借したいとおもいます。 環境:WindowsXPでオフィス2002 状況: エクセルブックa.xlsのシートに「コントロールツールボックス」のテキストボックスを配置(オブジェクト名はTEXTBOX_C) エクセルブックb.xlsにコードを書き、a.xlsのTEXTBOX_CのプロパティのValueかTextを取りだしたい 試した事: コントロールを配置したシートに次のマクロ TEXTBOX_C.Text = "これはコントロールのテキストボックス" を書くとテキストボックスに文字を入れ込めますが、別のエクセルブックからだと上手く行きません。 また、オートシェイプのテキストボックスの場合は簡単に出きるのですが、コントロールツールボックスではどうしても上手く行きませんので、対象法などご存知の方いらっしゃいましたら教えてください

  • 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は削除したいシートの名前が入ります。

  • エクセルVBA

    エクセルVBAのコードについて質問です。エクセル初心者です。 Windows10で32bit版のエクセル2010を使っています。 1.エクセルのマクロは32bit版でも64bit版にも対応できるようコードを組んでいるのですが、 32bitで動いているのか64bitで動いているのかどのように確かめたらよいでしょうか? あるマクロの途中に #If VBA7 And win64 Then MsgBox ” 64bit ” #Else またはIf VBA7 And win32 MsgBox ”32bit” #End If を組み込むと、If分の終わりには If分の最後に#EndIfが必要です、と表示されて(EndIfを書いているのに) エラーになります。 2.エクセルマクロをIEと連携させて使っています。 IEを操作させている途中でエクセルのメッセージBoxを最前面表示させるには どうしたらよいでしょうか? IEで特定の操作をしたら、エクセルが最前面に出て、OKボタン付きのメッセージBoxが表示され、OKボタンを押すとIEを操作する という動作をコードに書いています。 コードを書いた直後は、IE上での特定の操作のあとメッセージBoxが適切に最前面表示されますが、 一度保存し閉じてファイルを開き直しマクロを実行すると、メッセージBoxは最前面に出てくれません。 検討したコードは 1. SetForegroundWindow 2.VBA AppActivate. Microsoft Excel. Capture 3.AppActivate Microsoft です。いずれのコードを書いた場合も、保存まではうまくメッセージBoxに回答できるが 保存しファイルを開き直してマクロを実行するとメッセージBoxはIEの後ろに隠れたままであり、エクセルを選択しないと最前面表示されません。 しかし一応最前面表示されることもあることから、マクロを一度実行するごとにエクセル内のデータが変わる可能性も考えられす。

  • Excel2010 VBA終了時に強制終了する

    Excel2003、2007で実行した場合は正常終了するが Excel2010で実行するとVBA終了時に強制終了します。 処理は、マクロありブックからマクロなしブックを作成するために、 新規ブックを作成しマクロありブックからシートを移動する処理です。 VBA起動は、フォームコントロールから行っています。 VBA終了時に(End Sub)後にEXCELがなぜか強制終了します。 (Microsoft Excel は動作を停止しました。のメッセージが表示される) なお、 ・フォームコントロールから実行した場合はEXCELが強制終了し、   デバックモードで実行した場合は強制終了しません。  ・マクロありファイルの種類:Excel 97-2003ブック  ・★★★のソースが含まれていると、Excelが強制終了します。 以下、ソース。 Sub ファイル保存()   'マクロなしファイルを作成 CreateNoMacroBook End Sub '←ここで異常終了が発生する。 Sub CreateNoMacroBook() Dim fname As String Dim ns As Integer Dim cnt As Integer Dim i As Integer 'マクロありブックの名前を取得 fname = ActiveWorkbook.Name 'マクロありブックのシート数を取得 cnt = ActiveWorkbook.Worksheets.Count 'すべてのシートをMoveするとエラーになるのでシートを追加 Worksheets.Add After:=Worksheets(Worksheets.Count) '新規ブック作成時のデフォルトのシート数を保管 ns = Application.SheetsInNewWorkbook '新規ブック作成時のシート数を変更 Application.SheetsInNewWorkbook = 1 '新規ブック作成 Workbooks.Add '新規ブック作成時のデフォルトのシート数に戻す Application.SheetsInNewWorkbook = ns 'マクロありブックのシートを新規ブックの"Sheet1"シートの前に移動 For i = 1 To cnt Workbooks(fname).Worksheets(1).Move Before:=Workbooks(Workbooks.Count).Worksheets("Sheet1")  '★★★ Next i '表示用に新規ブックの一枚目のシートをアクティブにする Workbooks(Workbooks.Count).Worksheets(1).Activate Application.DisplayAlerts = False '新規ブックのデフォルトシート"Sheet1"を削除する Workbooks(Workbooks.Count).Worksheets("Sheet1").Delete Workbooks(Workbooks.Count).Activate Application.DisplayAlerts = True End Sub

  • エクセル2010VBA での質問です。

    VBAはやったことないので全く初心者です。 町内の諸費用をエクセルで管理しています。 年度が変わる度、当番も変わってデータを引き継いで管理するのですが、最初に連続印刷のVBAを作ってくれた人がもういないので、今まで、前年度のものをコピーし、中のデータを書き換えて使っていたようなのですが・・・ どのような設定がされているか把握するために質問させて頂きます。 エクセルを開き、マクロで作ってある印刷ボタン?を押すと、Sheet1にあるデータベース約100人分 (B列に100人分の名前・2行目にいくつかの項目・各項目の下に金額)が別のSheetにある個人請求書に連続印刷されるというものですが、添付していますVBAの内容を把握したい事が一つ目です。 年度が変わるごとにそのシートをコピーして中のデータを書き換えて使っているのですが、問題は有りますでしょうか?(二つ目です) 添付しております、ファイルのVBAを自分はわからないのですが、このBOOKを開いた時に ”このブックには、ほかのデータソースへのリンクが含まれています。 ・リンクを更新するとエクセルは最新のデータを取り込もうとします。 ・リンクを更新しないと、以前の情報が使用されます。 注意:データリンクは許可なく機密情報にアクセスして共有するのに使用される可能性があります。また、その他の問題を起こす可能性のある操作に使用される場合があります。このブックの作成元が信頼できない場合にはリンクを更新しないでください。   更新する・更新しない・ヘルプ ” というメッセージが出てきますが、このBOOKが入っているフォルダ以外のデータも参照されているのでしょうか?(三つ目) 情報が少なくて済みません。 宜しくお願い致します。

  • EXCELのシートのマクロ操作について

    EXCELについて質問がありまして、よろしくお願いします。 複数のシートがあるブックがあり、それを、それぞれシートごとに別のブックにしたいと思っています。 マクロやVBAなどを使って簡単に出来るものでしょうか? マクロ集などのサイトを探してみましたが、上手く見つけることができませんでした。 シート名をブック名として引き継いで保存できればベターだと思っております。それが出来なくてもブックとして起こせれば大丈夫です。 何かわかられましたらお教えいただけますと幸いです。 どうぞよろしくお願いします。

  • EXCEL VBAでシートを削除したい

    こんにちは。EXCEL VBAのことで質問させていただきます。 マクロでシートを削除しようと思い、 下記のように記述しました。 Sheets(1).Select ActiveWindow.SelectedSheets.Delete しかし、このように記述すると「選択したシートを削除します。~」のようなメッセージが出てきてしまうため、何度もOKボタンを押さなければなりません。これではマクロで自動実行した意味がなくなってしまいます。 このメッセージを回避する方法はないでしょうか。 宜しくお願い致します。

専門家に質問してみよう