• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロの保存先(マクロ初心者))

エクセルのマクロの使い方について

eden3616の回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.6

質問者さんはこんがらがっているようですね。 (1)該当のブックを開く (2)エクセルメニューより「表示」→「マクロ」と選択 (3)マクロ名「auto_open」を入力し「作成」を選択  ・マクロの保存先は「作業中のブック」としてください (4)以下のコードを記述(すでにSub auto_open()~End Sub)は記述済み Sub auto_open() Worksheets("Sheet1").Range("A1:C5").ClearContents End Sub (5)コードの入力画面(VBE)を右上の「×」で終了 (6)ブックをxlsmまたはxls形式で名前を付けて保存(これらはマクロがブックに保存できる形式) この手順で作成すれば(3)の作成時に、(1)で開いたブックの標準モジュール(自動作成)のauto_openプロシージャ(一部自動記入)にご自身の追加されたコードが記録されて保存されます。 ブックには標準モジュール以外にもシートモジュール、thisWorkbookモジュールなど、マクロのコード(VBA)を記述する場所が複数あります。 今回のauto_openプロシージャは「標準モジュール」に記述することで、マクロが保存されたブック(=標準モジュールにauto_openプロシージャが記述されたブック)が開くと実行されます。 この時、(4)で記述したコードが実行されますので、シート名が「Sheet1」のセル範囲「A1:C5」の値が削除(ClearContents)されます。 ですので、たとえSheet2があろうが、ほかのブックが同時に開いていようが、Sheet1という名前のシートがほかのブックにあろうが、プロシージャ名「auto_open」が記述されたブックを開けば、同ブックのSheet1のA1:C5が値削除されます。 なお、こちらのコードでは単にシート名を指定して範囲の値削除をしていますが、 ・シート名がSheet1からSheet3に代わる可能性がある   →シート名の指定ではなくて、左から何番目のシートのような指定方法にする ・シートの並びが変わる可能性がある   →シート名や順番の指定ではなくて、特定のセルに特定の文字が入っているシートのような指定方法にする など、条件や用途によってコードは適切に変更しないといけない場合があります。 現在記述されているコードのサンプルを記載していただき、シートの要件、問題になっている事柄を具体的に記載していただければより適格な回答が得られるかと思います。 先ずは、マクロの記述する場所やその挙動、ブック、シートの指定方法、などを勉強してみてください。 http://officetanaka.net/excel/vba/beginner/10.htm

akira0723
質問者

お礼

ありがとうございます。 当方の無知のせいで、お手数をおかけしましたが、皆様のおかげでようやく全貌?が理解できました。 本当に助かりました。 これから、コツコツとマクロを使い慣れていきたいと思います。 次の機会にも何卒宜しくお願い致します。

akira0723
質問者

補足

ご回答ありがとうございます。 上からザァと読ませていただいて出来そうな感じがします。 尚、当方が苦労して作成した、自動マクロは下の3行(正確には1行)です。 他にも3行程度の自動マクロも試しているのですが、危ないのでTESTのみで止めています。 Sub Auto_Open() Range("A6:D9").ClearContents End Sub これだと開いてきたSheetが対象になってしまう事に気付いたので質問させていただきました。 更には開いている .xlsm Bookにマクロにウッカリ感染?しないか等々心配になってきています。 主目的は作業の簡略化ではなく、誰もが意識しなくても間違わないような仕掛けを自動化することです。 すでに手動ではいくつかの簡単な作業のマクロが出来ているのですが現在は封印しています。 当方の現在の状況を考慮すると、同じマクロをBookごとに作成しても良いので他のBookやシートに影響しないような方法(式)が先ずは知りたいのですが。

関連するQ&A

  • エクセルのマクロを教えてください。(初心者です)その2

    エクセルで期間限定で使えるソフトを作ろうと思っています。 簡単に申し上げると、 使用期限を設けて、期限の日がくると、 エクセルのセルに 「有効期限が来ましたので、再度お申し込みください。」 という文章が表示され(ポップアップでなくていいです)、 このシート以外は片っ端からシートが削除され、 上書き保存され、これ以上使えないというものを作りたいのです。 ツールバーのマクロの記録を利用した 極度に簡単なマクロしかやったことがないので、 以下の点を中心にマクロの作成の仕方を お教え頂けますと幸甚です。 (1)有効期限の日付を入力しておいて、その日が来るとマクロが実行される方法 TODAY関数と有効期限の引き算でゼロになったら実行でしょうか。 該当セルの数値がゼロになったらマクロが実行されるという方法を お教え頂けませんか。 ちなみに、有効期限の日付は、非表示にしてシートの保護で開けないようにしておこうと思います。 (2)有効期限が来たら自動的にマクロが実行される方法 上記(1)の方法でやれば、ファイルを開いたとたんマクロが実行されるのでしょうか。 (3)マクロでシートを削除する方法 これは、通常のマクロの記録でやろうとすると、 シートを削除すると「やり直し」でもシートを復活させられないので、 シートがなくなっちゃった状態でしか保存できない気がするのですが・・・。 (4)上書き保存するマクロ 上記(3)と同様、マクロの記録では できないので、これ以外のやり方をお教え頂けませんか。 (5)シートを表示させるマクロ マクロを実行した時点で「有効期限が来ました・・」と入力された シートを表示させたいのです。 マクロで表示させる方法をお教え頂けますでしょうか。 (6)マクロを見れないようにする方法 マクロを自由自在に操れる人が 私の作ろうとするエクセルファイルを手にしたら、 「有効期限になる前にマクロを削除しちゃえ」と やられないかが心配です。 うまい対処方法ございませんでしょうか。 (7)パソコンの日付の操作の対処 上記の(6)と絡むのですが、 パソコンの日付とプロパティーから パソコンの日付をいじって 有効期限より前の日付にしたら ずっと使われてしまうのではないか心配です。 うまい対処方法ございませんでしょうか。 ずぶの素人の私にどなたか この方法をご教示頂けませんでしょうか。

  • エクセルVBA初心者です。マクロを組んでください。

    エクセルVBA初心者です。組んで欲しいマクロがあります。 Sheet 1に13桁を入力するセル sheet 2に検索したいデータ 手順としては、 Sheet 1のセルにデータを入力 →13桁以上でマクロが開始(されるように設定します) →Sheet 1のセルと同じ数列をSheet 2の列Aから検索 →該当のセルを含む行をSheet 3にコピー →Sheet 1の入力セルの少し下にもコピー (確認用) というのを一回一回ずつやりたいです。 できれば作業中マウスやキーボードを触りたくないので、そのために、マクロの終わわりには入力セル内の消去、マクロの始まりには確認用でコピーした行の削除もつけて下さい。 検索するSheet 2には同じデータが含まれているので、出来ればひとつずつSheet 3にコピーしたいので組み込んで頂けると幸いです。 よろしくお願いいたします。

  • エクセルのマクロについて教えてください

    作業が面倒だし、間違いもよく発生するので、 下の条件のマクロをどなたか教えて頂けませんか? 宜しくお願い致します。 社内のサーバーにエクセルファイル名、AからZまであるとします。 各AからZにそれぞれ同じシート名「集計」があるとします。 そのシート内にデータが色々あるとします。 ある決まったセルだけを削除するのではなく、セルの色だけで判断してデータを削除したいのです。 例えば、赤色のセルになっている部分だけを対象に 入力されている数字を消したいのです(行削除ではなく、単純にデリートです)。 上記をマクロで実行する方法はないでしょうか。 マクロ初心者なので、プログラム言語の下に簡単な説明を頂けると助かります。 どなたか詳しい方がいらっしゃいましたら、宜しくお願い致します。

  • EXCELでマクロを初めて実行してみたんですがぁ・・・・

    初めてマクロというものをやってみました。 ただ、動作を記憶させただけです。プログラムは全然知りません。 sheet1の株価4本値と日付を1日だけ繰り上げる 単純な動きです。一番最後のセルにその日の 日付と4本値と入れて、マクロを実行させて、1日だけ繰り上げる 作業です。 それを、Sheet2が「=Sheet1!B2」このような形で参照するように してあるのですが、実行させると、 Sheet2B2のセルが#REF!とかなんとか表示されて B3からしか正しく表示されません。 以後同じことを繰り返すと、どんどん1つずつセルがエラーして 正しく表示されるセルが下がりながら、減っていってしまいます??? なぜなんでしょうか?? また回避策というか、正しい方法はありますでしょうか?? 何卒、初めてなので、わかりやすくお教えいただけると ありがたいです。 よろしくお願いを致します。

  • Excelでのマクロ作成について

    次のようなマクロをExcelで作りたいのですが上手くできませんでした。みなさんのお力をお借りしたいと思い質問しました。 [質問内容]       A        B        C 1 20030303120000 2 3 20030406120000 4 5 20030512120000 6 7 このようなシートで、セルA1の内容を「03/03/2003」に変更して行2を削除する。(セルの内容ではなく行そのものを削除する。) この作業を繰り返して次のようなシートにする。      A        B        C 1 03/03/2003 2 04/06/2003 3 05/12/2003 4 5 ひとつのマクロを繰り返し実行するのでも構いませんが、数が多いのでできれば100行程度を一度に実行できれば助かります。 よろしくお願いします。

  • エクセルマクロのことです

    通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。

  • Excelのマクロ初心者です

    Excelのマクロ初心者です 同じBookでセルA1に”1”が入力されているSheetのみ全て印刷する マクロを教えてください!

  • Excelでマクロ設定したが反映されない(初心者です)

    Excelでマクロを設定したのですが、なぜかきちんと反映されません。 以下、主な作業(実際の作業とは少し違いますがだいたい主な作業)を記載してみました。なぜ反映されないのか分からないので、もしお分かりになる方がいらしたら教えてください。必要な情報が足りない場合は、付け足します!マクロ初心者、というか、Excelも関数をたまに使う程度なので、基本から間違えてたりするかもしれませんがお願いいたします。 ※一連の作業がまずワークシートを1枚増やして、その後、必要なデータを貼り付け、さらに作業にうつります。ということで、キリのいいところで作業を2つに分けています。 【STEP1】 新しいマクロの記録 ok 挿入 ワークシート Sheet4タブを a と変更 Sheet1タブを b と変更 Sheet2タブを c と変更 Sheet3タブを d と変更 記録終了 【STEP2】 新しいマクロの記録 ok タブabcdを選択 作業グループの状態で、 全体の文字サイズを10に変更 行を3行挿入 A1セルの文字サイズを16に変更 4行目を選択し、文字位置を中央揃え A4・B4・C4・D4・E4・F4のセル色を青に変更 シートaのA1にaと入力 シートbのA1にbと入力 シートcのA1にcと入力 シートdのA1にdと入力 シートaとシートcとシートdを選択 作業グループの状態で、 B列・C列を選択 桁区切りスタイルに変更 シートcを選択 C列・D列を選択 桁区切りスタイルに変更 G4セルを青に塗りつぶし 記録終了 保存 (Book1.xls) 新規作成 マクロ Book1.xls!Macro1 実行 ★シートabcdにそれぞれ必要なデータを貼り付ける。 マクロ Book1.xls!Macro2 実行 ⇒シートdのみにマクロで記録させたものが反映されている。 他のシートは部分的に反映されたりしている。

  • エクセル、マクロで「末尾を1文字削除」したいのですが

    またまた、お願いします。 エクセル初心者向けの入力支援としてマクロを使っています。 【やりたい事】 セルを選択しマクロを実行すると「該当セルの末尾1文字が削除される」というのは可能でしょうか? カーソルを入れてBSすれば済むだけの事ですが、諸般の事情で「セル選択+マクロ実行」の動作にしたいのです。 どなたかよろしくお願いします(ponta_024)

  • エクセル VBA初心者です

    エクセルでマクロを設定したいのですが、まだ初心者なのでVBAはほとんど書けません。 たとえば、A1セルの値をコピーして、一番最後のシートのA1セルに貼り付けるという作業を、始めのシートから最後から2番目のシートまで実行したいと思います。最後のシートにはA1からA2、A3、A4・・・のようにどんどん下に貼り付けていきたいのです。特にシートの名前を指定するのではなく、一番左から、最後から2番目までのシートまで、シートの数に関わらず実行したいのですが。。。 いろいろ本を見て調べたのですが、シートを指定して移動するのとかは書いてあったのですが、こういう場合はどうすればよいのでしょうか、よろしくお願いします。