• 締切済み

シートのコード部を後からプログラムで作成可能?

エクセル2003で、シートにプログラム(コード)がありシートを削除すると当然プログラムがなくなります。 シートはシートの挿入で新規に作成できますが、プログラム(コード)部を後から自動的に(標準モジュールの関数からソートのコード)を追加することは可能でしょうか? シートのコード部は主にイベントですが、詳しい方教えて下さい。

  • hdkoa
  • お礼率0% (1/117)

みんなの回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

「Visual Basic プロジェクトへのアクセスを信頼する」のチェックボックスにチェックを付けてないとVBAからコードの操作はできません。 http://www.asahi-net.or.jp/~ef2o-inue/secur/sub07_01.html#label4 参考:VBEのコードを他のファイルにコピーするには http://park11.wakwak.com/~miko/Excel_Note/14-01_macro.htm#14-01-05

関連するQ&A

  • Excel VBAでのコードの書き分け方

    Excel VBAについてご質問します。 プロジェクトの項目を見ると、 Sheet1 ThisWorkbook 標準モジュール などさまざまあると思います。 これらに対して、どこにコードを書いていくべきなのかがわかりません。 例えば、Sheet1にボタンを配置して、それがクリックされたときの動作についてはSheet1に書けばいいのだと思います。 ですが、いろんなシートのコード、フォームのコードなどから呼び出される関数はThisWorkbookか標準モジュールのどちらに書けばいいのか悩んでいます。 それ以外のケースも含めて、一般的にこういう風に使い分けをするというのがありましたら、ぜひ教えてください。 よろしくお願いいたします。

  • ExcelのSheetに作られたMacro1について

    EXCELのシート画面で、Alt+F11を押して、Workbookのイベントによって起動するマクロを記述するモジュールシートを開き、マクロを貼り付けました。 確かに、エクセルを開くと同時にマクロが起動します。便利でびっくりしています。 ところで、これと同時に、Macro1という名のシートが自動的に作成されました。これがわかりません。無視してもかまわないでしょうか。うっかり普通のシートのSheet1などと勘違いして書き込みをしたり、名前を変えたり、削除したりしそうです。もしそうしたらどうなりますか。不都合がありますか。 よろしくお願いします。

  • ExcelVBAのユーザフォームに関する質問です

    エクセル画面のシート1にユーザフォームを呼び出して、そのユーザフォームに設置してあるコマンドボタンを 押下するといくつかのセルの情報をテキストファイルに書き出すプログラムを作ってます。 例えば、 Private Sub CommandButton1_Click() End Sub の間にテキストファイル作成のコードを記述すればうまくいくとは思うのですが、現段階でテキストファイル作成の関数を シート1のワークシートモジュールにprivateな関数として書き込んであります。 その関数の中の引数などもprivateな変数としていくつか宣言してあり、改めて標準モジュールに関数を書き換えて、そこから ボタンイベントの中で呼び出すように作り変えるのは作業として大変に感じられました。 そこで無理かとも思うのですが、シート1のワークシートモジュールの中でコマンドボタンが押されたというイベントを拾って、 そこでファイル作成の関数を呼び出すといった作りに換えることは可能なのでしょうか? 例えばユーザフォーム内に設置したラベルは Userform1.Label1.Top = Userform1.Label1.Top + 10 といったように位置の変更がシート1から制御できたりしますが、そのような要領でできないものなのかなと思いました。 初心者なもので的外れな質問をしてしまっているかもしれませんが、ご容赦ください。 詳しい方がいらっしゃれば、ご教授お願いいたします。

  • Excelのプログラムについて

    "Excel エクセル"で添付画像のようなプログラムの作成は可能でしょうか? (1)Sheet1の入力欄に数字を入力すると、(2)Sheet2にある総当たり表を参照して、(3)Sheet1に入力した数字で新しく総当たり表を作成する ※入力欄に入れる数字を変えれば自動で出力される総当たり表の内容も変わる 私は、エクセルのマクロとか関数の初心者で詳しいことが分からなくて困っています。 これを機に勉強しようと考えておりまして 〇エクセルでこのプログラムが書けるのか 〇どの関数を勉強すればよいのか を教えていただければと思います。 よろしくお願いいたします。

  • シートのコード(マクロ)で別のシートを指定することはできますか?

    環境はWINDOWS XP, EXCEL 2003 です。 VBAについて、初歩的な質問ですみません。 コードを書けるモジュールには Microsoft Excel Objects と標準モジュールとありますが、シートのコードでは、別のシート上のセルをオブジェクトとして指定することはできないのでしょうか? 今開いていて、ボタンのあるシートを、Sheet1 (基本画面)、読み込みたいデータがあるシート(同じブック内)をSheet3 (計算用)、とします。 基本画面のセルA1に日付を入力してから、「データ選択」ボタン(コントロールツールボックスで標準で出てくるボタンです)を押すと以下のマクロが動くようにしたため、このコードはSheet1のモジュールに書きました。 このマクロの前半に、日付が、計算用のC3に事前に書き込まれている日付と一致しているかどうかを判定させ、一致しない時は中断するようにさせたのです。マクロ後半は本題と関係ないと思うので省きます。 Private Sub データ選択_Click() '前半で下準備ができているか、チェック Hidzuke = Range("A1").Value Sheets("計算用").Select Atai = Range("C3").Value Sheets("基本画面").Select If Atai <> Hidzuke _ Then Range("A2").Value = "下準備ボタンを先に押してください" Exit Sub End If '以下、省略 End Sub すると、Range("C3").Value は、Sheets("計算用") の"C3"ではなく、 Sheets("基本画面") の方の"C3"を対象として読み込んでしまいました。私はシートのコードを書くことはあまり多くなく、標準モジュールと同じ感覚で、Sheets("計算用") の"C3"の値を読んだつもりだったのですが、シートのコードと標準モジュールでは、どのような違いに注意したら良いのでしょうか。 さらに不思議なことに、この"C3"を"C7"などに変えると、Ataiの中身が "準備完了" などの文字列になったのです。しかしこの"準備完了"という文字列は、現在のブックにはどこにもありません。今のファイルの前の前ぐらいまで、確かに、 Sheets("基本画面") の"C7"には、"準備完了" と書き込んでいました。なぜ、昔のセルの中身(値)がゴーストのように残ってしまうのでしょうか・・・。 ツリーで、標準モジュールは標準モジュールで、シート専用マクロはExcel Objects で、はっきりわかれていますから、私はここの違いから理解できていなくてこんな馬鹿な質問をしてしまうのだと思います。他のシートのセルをオブジェクトとして指定したければ、モジュールが増えて多少猥雑になってでも、Call などで標準モジュールを呼び出すしかありませんか? よろしくお願いします。

  • エクセルのユーザー関数が小文字に

    WindowsXP Proffessional OFFICE2003の構成でエクセルを使用していてサービスパックも入れています。 自分でユーザー関数を作って使用しているのですが標準、モジュールのほうで大文字で関数を書いているのにワークシートのほうで使用すると勝手に小文字に書き換えられてしまいます。 標準モジュール一つだけ関数マクロがあるだけでシートのほうには何も記述していません。 ちょっと前まで標準モジュール内の関数を大文字に指定していても小文字に戻されてしまうので、わざとシートのほうに大文字で関数を書くと標準モジュール内の関数が自動的に変わって問題は解決したと思ったのですが、エクセル本体?の関数が変わっておりません。 関数そのものの動きは思った通りに動いています。 こういうときはみなさんはどうなさいますか?

  • エクセル 一つのワークシートだけプログラムを無効にしたい

    こんにちは。 エクセルVBA初心者です。 ブックの複数のワークシートにVBAでプログラムを書いています。 Sheet1のモジュールにマクロ1~4 sheet2のモジュールにマクロ5~7 と言った具合です。 Sheet2で作業するのにプログラムが動作すると邪魔なので、Sheet2のプログラムだけを一時的に無効にしておきたいと思ってます。 このときの条件(というか希望)として、 ・マクロはまた使うので消さない ・Sheet1のマクロはSheet2の確認作業で使うのでそのまま使えるようにしておきたい ・有効/無効を簡単に切り替えたい があるのですが、このような要望をかなえる方法を教えて下さい。 尚、OSはWin2000、エクセルは97です。 よろしくお願いします。

  • VBからExcel上の処理をするプログラムを作成しています。

    VB初心者です。 今、VBの画面からExcelを起動させて、一連の処理をした後、 またVBの画面に自動的に戻るようなプログラムを作成しようとしているのですが、 Excelのシートを削除する時に、ダイアログボックスが開いてしまい、そこで処理が止まってしまいます。 ダイアログボックスを開かないようにするとか、自動的にOKボタンを押したことにするとか、 何か方法があったら教えてください。

  • EXCEL2010 VBA シートモジュール

    EXCEL2010でVBAを使用しています。 シートモジュールを使用して特定のシートがアクティブになるとコードが実行されるようにしたいのですが、問題が一点ありまして。 特定のシートは別のコマンドを使用したときに作成されるので最初からあるシートではありません。 なのでシートモジュールにコードを入力しておくことができません。 処理の流れ 1.シートAでコマンドボタンをクリック 2.コードが実行されてシートB(特定のシート)・シートC~シートFを作成 シートが作成されると同時にシートモジュールに決められたコードを自動で入力するというような 方法はないでしょうか?

  • EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作り

    EXCELのVBAで、あるワークシートでのみ使うユーザーフォームを作りました。そのワークシート上での定数や、プロシージャや関数をワークシートのモジュールに置いています。そして、その定数や関数などをユーザーフォームのイニシャライズなどで使いたいと思いますが、ユーザーフォームのモジュールはワークシートのモジュールとは別なので、使えません。他への影響を考えると、標準モジュールには、置くのは不適切だと思います。 特定のワークシート上でのみ使うユーザーフォームと、そのワークシートとで、共通の定数や関数などを使う方法は、あるのでしょうか。どのようにすればよいのでしょうか。