• ベストアンサー

excelブックを開いた時に自動的に行われる操作

ワークブックを開いた時にワークブック名を取得して、もしabc.xlsmなら call sheet_del を実行。そうでない場合は、worksheets(1).selectを実行するようにするにはどうすれば良いでしょうか? 下にどのようなコードを書き込めばよいでしょうか? Private Sub Workbook_Open() End Sub

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

https://excel-ubara.com/excelvba4/EXCEL239.html ブックが開いた時に自動実行(Workbook_OpenとAuto_Open) などを参考にしてうまき行きませんか。 ーー ふつうの答えは Private Sub Workbook_Open() MsgBox ThisWorkbook.Name End Sub の応用でブック名が取得できるのでは。 == しかしこのイベントを入れているブックを、たまたま開けば、そのブック名を判別して、希望の造作はさせられるが、そのブックを開くのはたまたまで、普通は、他のブックを開くで、あろうから、上記(イベントで捉えるの)はピント外れのような気がする。 そのブックに>call sheet_del を実行を書けば、済むことでは。 よく、勉強不足で、状況とか対処法が判らん。 > call sheet_del を実行 主題ではないのだろうが、もう少し具体的に書いておくべきでは。関連するかも。

shibushijuko
質問者

お礼

回答ありがとうございます。下記コードで解決しました。 If ActiveWorkbook.name <> "abc.xlsm" then 開いたブックのシートになるコマンドボタンを削除。 else ワークシート1を開いて。 end if abc.xlsmはテンプレートとして使用し、コマンドボタン(バックアップボタン)を配置してあり、そのボタンを押すことで別名で保存されます。 ユーザーはバックアップしたブックを開いて編集する可能性があるため、不要なバックアップボタンを開いた時に、削除したいわけです。尚、他の機能を持つマクロボタンは消したくないわけです。 他にいい方法があるかもしれませんが、私なりに考えました。

関連するQ&A

  • 他のブックが開くと同時にユーザーフォームを表したい

    Aブックから他のブックが開いた時、ユーザーフォームを表示したいので 次のコードでやってみたが、なぜか表示されません。ご教示お願いします。 AブックのThisworkbookに入力しました。 (1)Private Sub Workbook_Open() A表紙.Show End Sub A表紙にコマンドボタンをつけました。 (2)Private Sub CommandButton96_Click() A表紙.Hide Workbooks.Open Filename:=ThisWorkbook.Path & "\2年施設\計算プログラム.xlsm" Sheets(1).Select End Sub 開いた”改善プログラム”のThisworkbookに入力しました。 Private Sub Workbook_Open() UserForm1.Show End Sub

  • VBAの更なる応用編

    度々すみません。 VBAで教えて下さい。 主ファイルYYYY.xlsmに下記の記述をしました。 副ファイルXXXX.xlsmがあります。 ------------------------------------------------- Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Workbooks("XXXX.xlsm").Close End Sub Private Sub Workbook_Open() Workbooks.Open Filename:= _ "XXXX.xlsm" Worksheets("Sheet1").Activate End Sub ------------------------------------------------- 以上で、YYYY.xlsmとXXXX.xlsmの場合、主、副の共に保存せずに 終了するにはどのようなコメントを追記したら良いですか。 ネットで調べた下記の内容は場所が悪いのか動作しませんでした。 Sub CloseWorkbook() Workbooks("XXXX").Close SaveChanges:= False End Sub

  • EXCEL2003のWorkBook_Openイベントについて

    必要があって以前から下記のようなWorkBook_Openを実行させていましたが必要なくなったので消したいのですがその方法を忘れてしまいました。 よろしく教えて下さい。 No.1 Private Sub Workbook_Open() Dim ws As Worksheet For Each ws In Worksheets ws.Select ws.Cells(1, ActiveCell.Column).Select Next End Sub

  • エクセル起動時のプロジェクトエクスプローラの「ThisWorkbook」の記述について教えてください。

    現在Sheet1のG5をカレントセルするように次のように記述してあります。 Private Sub Workbook_Open() Sheets("Sheet1").Range("G5").Select End Sub これをG5ではなく今日の日付(たとえば2009/11/22)のあるセルをカレントセルにしたいと思います。よろしくお願いします。

  • Office2010のVBAファイル自動オープン

    VBAの自動オープンで対象ファイルの開き方によって VBAが正常に動かないので質問させt下さい。 ネットワーク上のサーバーである AD-1から開くのとネットワークドライブPから開くのとでは Excelの名前の管理機能が動作しません。 Private Sub Workbook_Open() Workbooks.Open Filename:= _ "\\ad1\共通\aaaa.xlsx" Worksheets("Sheet1").Activate と Private Sub Workbook_Open() Workbooks.Open Filename:= _ "P:\共通\aaaa.xlsx" Worksheets("Sheet1").Activate 両方とも稼働させる方法はあるのでしょうか? よろしくお願いします。 End Sub

  • エクセルVBAで他のbookのセルcellsで参照

    エクセルVBAで他のbookのセルの値(一定の範囲)を参照したいのですが、変数を使いたいため、cellsを使用したいのですがうまくいきません。方法はないでしょうか。 下記に例を示します。 rangeを使用すればすべてok((2)(5))(この場合はset文を使用しなくてもok(5))。同じbookならcells使用ok(4)。 他のbookをcells文使用する方法はないでしょうか(もちろんできれば、Thisbookの方もcellsを使用したい)。 よろしくお願いします。 sub test() Dim ThisBook As Workbook Dim Workbook2 As Workbook 'マクロを実行しているワークブック Set ThisBook = ThisWorkbook '他のワークブック Set Workbook2 = Workbooks("test11.xlsx") ' 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value  '(1)だめ 'ThisBook.Worksheets(1).Range("A1:B2").Value = Workbook2.Worksheets(1).Range("a1:b2").Value '(2) OK 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test11.xlsx").Worksheets(1).Range(Cells(1, 1), Cells(2, 2)).Value '(3) だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:B2").Value = Workbooks("test1.xlsm").Worksheets(1).Range(Cells(3, 3), Cells(4, 4)).Value  '(4)だめ 'Workbooks("test1.xlsm").Worksheets(1).Range("A1:ii8000").Value = Workbooks("test11.xlsx").Worksheets(1).Range("a1:ii8000").Value  '(5) ok End Sub

  • エクセルの個人用マクロブック

    「個人用マクロブック」に abc というマクロが登録されています。 コマンドボタンをクリックして abc を実行できるようにしたいのですが。 Sub abc () 処理内容 End Sub Private Sub CommandButton1_Click() Call abc End Sub コマンドボタンをクリックするとエラーになってしまいます。エラー内容は「SubまたはFunctionが定義されていません」です。 VBE画面から直接 abc を実行した場合はエラーになりません。 どこを直せばいいのでしょうか。

  • エクセルVBAについて

    Sub a() Sheets("Sheet1").Select End Sub Sub b() Worksheets("Sheet1").Select End Sub どちらコードもSheet1を選択しますが 「こちらを使うべき!」ってありますか? 独学のため、SheetsとWorksheetsの違いがわかりません。 ご教授よろしくお願いします。

  • 再びExcelの自動スクロールアップのマクロについて

    Excel2002をOpenした時自動的にスクロールアップするマクロを識者より教えて頂きました。 下記の回答です。 ThisWorkbookのWorkbook_Openイベントに下記をコピペ する。 Private Sub Workbook_Open() ActiveSheet.Cells(1, ActiveCell.Column).Select End Sub 結論は上記で目出度く目的が達せられましたが 実はBookの中の複数あるSheetの内、立ちあがった時、開いているSheetにしかこのマクロが働いて後の複数のSheetはスクロールアップはしません。 質問はBookをOpenした時Bookの中にある全部のSheetがスクロールアップすることが出来る方法はあるのでしょうか。 よろしくお願いします。

  • Excelでシート名と最終更新日を自動表示したい

    Excelを使って (1)セルA1に入れた名目をシート名にし (2)セルH1には、最終更新日を自動で入れたいです。 調べた結果、 シート名を右クリックして「コードの表示」から (1)は Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub を入れてうまくいきましたが、 (2)は Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub を入れてみましたが(←調べましたもの) うまくいきませんでした。 単純に、 Private Sub Worksheet_Change(ByVal Target As Range) Sheets(1).Name = Range("B1") End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  If ThisWorkbook.Saved = False Then   Worksheets("Sheet1").Range("H1").Value = Date  End If End Sub とつなげて入れるのではだめなんでしょうか? それとも、(2)の何かが間違っていますか? ご教授願います。

専門家に質問してみよう