• ベストアンサー

エクセル:マクロ処理

エクセルファイルにマクロを入れておき、あるボタンを押したらそのマクロが1回だけ実行される。 というようにしたい。 (質問)   ボタンは、どう作るか。コマンドで作るのか。   ボタン処理のところのマクロ記述はどんな感じのコードか。   このファイルを開いたときマクロを有効とするかは有効にするでいいんですよね。 (参考) ワークシート   ボタン1を表示しておく   マクロ   ボタン処理   実行処理 マクロend

  • taktta
  • お礼率72% (1031/1430)

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

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

>ボタンは、どう作るか。コマンドで作るのか。 意味が良くわからないが、 (1)手操作で貼り付ける (2)プログラムで作成する(マクロの記録で判る) Sub Macro2() ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=300, Top:=200, Width:=94.5, Height:=25).Select End Sub のように。 > ボタン処理のところのマクロ記述はどんな感じのコードか。 処理内容を、VBで普通の書き方で書いたものの Sub XXX()のXXXを書く。  XXX のように。 >ボタンは普通、それをクリックしたときのイベントで発動するので Private Sub CommandButton1_Click()  XXX  '処理 End Sub のようになる。 >このファイルを開いたときマクロを有効とするかは有効にするでいいんですよね。 有効にする。 > ボタン処理 の意味が良くわからない。ボタンをクリックした時の処理なら 上記の通り。

taktta
質問者

お礼

おかげで解決しました.どうもありがとうございました。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

>ボタンは、どう作るか。コマンドで作るのか。 >ボタン処理のところのマクロ記述はどんな感じのコードか。 1.「表示」「ツールバー」の「コントロールツールボックス」を表示させ、そこの「コマンドボタン」を配置して ツールバーの「コードの表示」でそこにマクロの記述する。 2.オートシェープをセルに配置して右クリックで「マクロの登録」(マクロの記述変更はありません。) 3.「表示」「ツールバー」「ユーザー設定」のコマンドタブから「マクロボタン」をドラッグしてツールバー上に配置 右クリックで「マクロの登録」(マクロの記述変更はありません。) 例1コマンドボタンの場合 Private Sub CommandButton1_Click()  実行処理 End Sub 例2,3オートシェープ・ツールバーのマクロボタンの場合 Sub Macro1()  実行処理 End Sub >このファイルを開いたときマクロを有効とするかは有効にするでいいんですよね。 その通りです。

taktta
質問者

お礼

おかげで解決しました.どうもありがとうございました。

回答No.1

簡易的な方法ですが メニューの「挿入」-「図」-「オートシェイプ」から適当な基本図形を選んでシート上に置き、 その図形を右クリックし、「マクロの登録」を選んで既に作成しておいたマクロを指定したらよいと思います。 基本図形ですのでテキストを追加したり、色を指定できたりして、ボタンらしくできると思います。

taktta
質問者

お礼

おかげで解決しました.どうもありがとうございました。

関連するQ&A

  • エクセルのマクロで作成した関数を他のエクセルのファイルから参照できるのですか?

    エクセルVBAに関して質問です。 a.xlsというファイルに複数のシートがあり すべてのシートにあるデータと「計算」ボタンがあります。 「計算」ボタンを押下すると、マクロが実行され 計算結果が同じシートに表示されます。 データの内容はシートごとに違いますが、 「計算」ボタンで呼び出したいマクロはすべて同じです。 この「計算」ボタンを押すと実行されるマクロを b.xlsに記述したいのですが、 (他のエクセルのファイルにも使いまわしたいので) そのようなことは可能なのでしょうか。 またどのようにマクロを記述すればこのマクロを 呼び出すことができるのでしょうか。 分かりにくい文章で申し訳ございませんが ご教授くださるとうれしいです。

  • Excel VBA  Sheet1に記述していたのですがうまく動きません。

    シート1にコマンドボタンを配置し、Sheet1にそのままコードを記述していました。そこにマクロで記録したシート3の並び替えのコードを追記したのですがうまく動きません。 もしかしてこれは、Sheet1に記述していたためなのでしょうか。 このままSheet1に一連の作業として記述していきたいのですが、 どうしたらよいのでしょうか。 Excel2003を使用しています。 またModule1にSheet1のコードをコピーして移動させた場合は、どのようにすればコマンドボタンから実行させることができるのでしょうか。 宜しくお願い致します。

  • コマンドボタンにマクロを登録させる方法

    エクセルでマクロを作成しました。マクロを実行させる為に「コントロールツールボックス」にある「コマンドボタン」で作ったボタンに登録をしたいのですがうまくいきません。 以前はコマンドボタンを作ったら、自動的に「マクロの登録」ダイアログボックスが出てきたのですが、何故か出なくなってしまいました。オートシェイプで作成したボタンなら、右クリックすると「マクロの登録」があるのですが、コマンドボタンを右クリックしても「マクロの登録」がありません。以前のように、自動的に「マクロの登録」ダイアログボックスを表示させる方法があったら教えてください。 また、ボタンをダブルクリックするとVBAが開いて以下のようなコードの記載がありますが、ここにコードを記載すればボタンをクリックしたときにマクロが実行されるのでしょうか?VBAはまったく解りませんので、どのように記載したらいいのかわかりません。実際に記入して教えてください。お願いします。マクロ名は、日本語で「結果一覧」としました。(「Private Sub CommandButton1_Click()」と「End Sub」の間に、マクロの記述部分をコピーして、貼り付けたら、ボタンをクリックしたときにマクロは実行できたのですが、もっと簡単にマクロ名を記述したら実行できるような気がするのですが、簡単に記述して実行できる方法があったら教えてください。) OSはWindows ME、Excelは2002 です。よろしくお願いします。 コマンドボタンをダブルクリックしたときのコードです。 Private Sub CommandButton1_Click() End Sub

  • Excel VBA で自作ツールバーにマクロを登録する際のテクニック

    Excel VBAで新たなツールバーを作成ならびに表示をするマクロを記述しました。ツールバーにはコマンドボタンを貼り付け、さらにコマンドボタンには他のマクロを登録しています。 処理の実行自体はうまくいったのですが、実際にツールバーが現れたときに、ボタンのイメージだけではなく、 テキストも同時に表示させたいのですが、なかなかうまくいきません。 (手作業に言い換えると「選択したボタンの編集」ボタンから「イメージとテキストを表示」にチェックをつけたい) ちなみに記述したコードは次のとおりで、私の予想では ★の部分に何か追加するのではないかと思うのですが。 色々と調べてみたのですが、なかなか良い答えが見つけられず・・・・ どうぞ、よろしくお願いいたします。 **↓ Dim MyCombar As CommandBar Dim MyBtn AsCommandBarButton ' ツールバー「シート初期化」作成 Set MyCombar = Application.CommandBars.Add(Name:="シート初期化") '「シート初期化」の表示場所 With MyCombar .Top = 200 .Left = 400 .Visible = True End With ' シート初期化」にマクロ『Clear_Sheet』登録 Set MyBtn = MyCombar.Controls.Add(Type:=msoControlButton, ID:=2950) With MyBtn .OnAction = "Clear_Sheet" .Caption = "シート初期化" '★→ここの部分に、何か追加? End With

  • エクセルのマクロの記述について

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • VBからエクセルマクロを実行したい

    VB2008で コマンドボタンを押すと 現在開いているエクセルファイル(test.xls)のマクロ1を実行させることは可能でしょうか? できればコードを教えていただける助かるのですが、、、 よろしくお願いします。

  • エクセル/マクロ エラー処理がうまくいきません

    エクセルマクロの質問です。エクセルのヴァージョンは2000です。 シートをコピーして新シートに任意の名前を付けるマクロを作っています。 ユーザーフォームの中に一つのテキストボックス(新シートの名前入力用)と 二つのコマンドボタンを設置し一つは実行ボタン、もう一つはキャンセルボタンとしました。 テキストボックスに不正な名前(空白、記号、すでに存在するシート名)が入力された状態で 実行ボタンを押すと新シートは作成されず、メッセージボックスで実行できない旨が表示され、 入力フォームに戻るという感じにしようと思っています。 エラー処理には下記の通りOn Errorステートメントを試してみました。が、どうもうまくいきません。 エラーが出ても新しいシートが作成されてしまい、その後にメッセージボックスが出てしまいます。 正しいエラー処理の仕方をご教示頂けると幸いです。どうぞよろしくお願いします。 Private Sub CommandButton1_Click() Dim NewSheetName As String NewSheetName = TextBox1.Value On Error GoTo Err1 Sheets("Summary").Select Sheets("Summary").Copy After:=Sheets("Summary") ActiveSheet.Name = NewSheetName Exit Sub Err1: MsgBox "Invalid name"    Exit Sub End Sub

  • エクセルマクロでファイルを開いて保存したいです。

    エクセルマクロでファイルを開いて保存したいです。 エクセルファイルでファイル名「編集」という物を開きます。 このSheet1には中央にコマンドボタンが作成して有ります。 このボタンをクリックして以下の作業をマクロで行いたいです。 1.エクセル標準の「ファイルを開く」のメッセージボックスが開く 2.ここは使用者が作業をしてもらう   マイドキュメントだったり、マイネットワークだったり、   (ファイルの種類はCSVにする)   処理をしたいCSVファイルを探してもらい選択後、開くをクリック   例えば20100922.CSVを選択し開くをクリック 3.クリックと同時にそのファイルが展開されて、「編集」のエクセルファイルの   Sheetにシート名「集計」が作成されそのシートにCSVファイルの全内容がセルA1から貼り付く。   さらに登録してあるマクロモジュールで編集処理がされ   マクロを引き継がず、シート「集計」だけを   ファイル名は固定でそのファイル名の後ろに作成日(システム日付)を入れて   参照したCSVファイルの保管場所に保存する。   ファイル名例:売上20100923.xls(売上は固定) 4.エクセル「編集」のファイルからシート「集計」を削除する。 5.メッセージBOXで「編集終了」と表示 次回エクセルファイル「編集」を開くと、コマンドボタンだけである。 また作成された「売上20100923」はマクロがないから開くときに マクロのメッセージは出ない。というようにしたいです。 NO.2のファイルを選択する作業は作業者にしてもらいますが シート1のコマンドボタン1回を押すだけでNO.1~NO.5まで完結させたいです。  NO.3のマクロ処理はマクロの記録でモジュールができています。 このマクロの作成方法と、そのマクロが出来たら その文のどこに作成済みの処理文を入れればいいのかわかりません。 よろしくお願いします。 ここでつまづいています。この後この選択したファイルの全内容が シートの集計に展開されません。 Private Sub CommandButton1_Click() Call 集計 End Sub Sub 集計() FullPath = Application.GetOpenFilename("CSV,*.CSV") If FullPath <> "False" Then Sheets("Sheet1").Select Sheets.Add ActiveSheet.Name = "集計" With ActiveSheet.QueryTables.Add(Connection:="CSV;" & FullPath, Destination:=Range("A1"))   マクロの記録で作成したマクロ   シート"集計"をマクロを引きつかずファイル名売上&システム日付で保存   シート"集計"を削除する

  • 起動時のマクロイベント

    お世話になります。 現在VBAである処理を行なおうとしています。 手順1.ブックを開いた時点で任意の場所に格納されているフォルダ名をボタン名にセットし表示 手順2.フォルダ名が表示されたボタンをクリックすると新しいブックが開き、クリックしたボタン名に相当するフォルダの中身のファイル名をボタン名にセットする。 手順3.ファイル名が表示されたボタンをクリックするとファイルが表示される。 としています。 それぞれのブック(Sheet1)のなかに Private Sub Workbook_Open() (処理を記述) End Sub をつくり、手順1.手順2.ともにフォルダ名やファイル名を取得する処理を記述しているのですが、ブックを起動した時点では実行されません。 ブックの起動後に自らマクロボタンをクリックさせなければならない状態です。 マクロを実行しなければエラーになり、 マクロを実行すれば思うような結果が返ってきます。 処理を”ThisWorkbook”のなかに記述しても変わりませんでしたし、マクロが有効になっていないのかと思い、セキュリティー設定を確認したところ「中」になっていたので大丈夫であるとは思う出すけど・・・。 問題点を解決するにはどうしたらよいのでしょうか。 コマンドの誤りがあるのでしょうか? 何か設定が必要なのでしょうか? 起動時にマクロボタンを自動でクリックするようなコマンドが必要なのでしょうか? 色々考えているのですが、解決に至りません。 どなたかご教授宜しくお願いします。

  • Wordのアドインとマクロ実行について

    Wordのアドインとマクロ実行について Word2003を使用しています。 アドイン用のテンプレートファイルを作成し、アドインの追加まではできました。 アドインで記述したマクロを実行させたいのですが、記述方法がわかりませんでした。 Excelですと「ファイル名!関数名」で呼べるようですが、 Wordの場合、どのように記述すればアドインのマクロ処理を呼ぶことができるのでしょうか? (例.Word文書にボタンを追加してボタンがクリックされたら、アドインのマクロ処理が実行される等 処理をコードで記述したい) ご教授よろしくお願いたします。

専門家に質問してみよう