Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


13576 / 13644 ツリー ←次へ | 前へ→

【4726】モジュール削除について saku 03/4/3(木) 20:25 質問
【4739】Re:モジュール削除について ポンタ 03/4/4(金) 9:15 回答
【4755】Re:モジュール削除について saku 03/4/4(金) 14:39 お礼
【4762】モジュールを削除する!! こう 03/4/4(金) 16:43 回答
【4766】Re:モジュールを削除する!! saku 03/4/4(金) 19:11 質問
【4770】Re:モジュールを削除する!! bykin 03/4/5(土) 0:48 発言

【4726】モジュール削除について
質問  saku  - 03/4/3(木) 20:25 -

引用なし
パスワード
   auto_openで開いた時にモジュールを
処理の最後に削除する事出来るでしょうか?

やっていることは、帳票とマクロがいっしょに
なっているファイルを開いた時に、帳票だけが
表示されていてその後の保存・保存後に
再度ファイルを開く場合などにマクロが走らない
ようにしたいのです?

【4739】Re:モジュール削除について
回答  ポンタ  - 03/4/4(金) 9:15 -

引用なし
パスワード
   帳票だけを別名で保存する、というやり方がいちばん簡単ではないでしょうか?

例)
Worksheets("帳票").SaveAs Filename:="帳票"

【4755】Re:モジュール削除について
お礼  saku  - 03/4/4(金) 14:39 -

引用なし
パスワード
   ▼ポンタ さん:
>帳票だけを別名で保存する、というやり方がいちばん簡単ではないでしょうか?
>
>例)
>Worksheets("帳票").SaveAs Filename:="帳票"

なるほど・・・。
やはりそのように保存するとか
新規ワークブックにコピーという
やり方しかないですよね。

ありがとう御座いました。

【4762】モジュールを削除する!!
回答  こう E-MAIL  - 03/4/4(金) 16:43 -

引用なし
パスワード
   #別に「!!」って付けなくても....^_^;

sakuさん,こんにちわ。
>auto_openで開いた時にモジュールを
>処理の最後に削除する事出来るでしょうか?

実際にSubやFunctionプロシージャを削除するコードです。
(sheet1に記述しているhogehogeプロシージャを削除します)

  Wシート = "sheet1"
  W処理名 = "hogehoge"
  With Application.VBE.ActiveVBProject
    StartLine = .VBComponents(Wシート).CodeModule.ProcStartLine(W処理名, vbext_pk_Proc)
    CntLine = .VBComponents(Wシート).CodeModule.ProcCountLines(W処理名, vbext_pk_Proc)
    If StartLine > 0 Then
      For i = StartLine To StartLine + CntLine - 1
        .VBComponents(Wシート).CodeModule.DeleteLines StartLine
      Next i
    End If
  End With


>再度ファイルを開く場合などにマクロが走らない
>ようにしたいのです?
単にコードを実行させたくないのであれば「Exit Sub」をプロシージャの
先頭に埋め込む方法もあります。こちらは,InsertLinesメソッドですね。

【4766】Re:モジュールを削除する!!
質問  saku  - 03/4/4(金) 19:11 -

引用なし
パスワード
   ▼こう さん:
>#別に「!!」って付けなくても....^_^;
>
>sakuさん,こんにちわ。
>>auto_openで開いた時にモジュールを
>>処理の最後に削除する事出来るでしょうか?
>
>実際にSubやFunctionプロシージャを削除するコードです。
>(sheet1に記述しているhogehogeプロシージャを削除します)
>
>  Wシート = "sheet1"
>  W処理名 = "hogehoge"
>  With Application.VBE.ActiveVBProject
>    StartLine = .VBComponents(Wシート).CodeModule.ProcStartLine(W処理名, vbext_pk_Proc)
>    CntLine = .VBComponents(Wシート).CodeModule.ProcCountLines(W処理名, vbext_pk_Proc)
>    If StartLine > 0 Then
>      For i = StartLine To StartLine + CntLine - 1
>        .VBComponents(Wシート).CodeModule.DeleteLines StartLine
>      Next i
>    End If
>  End With
>
>
>>再度ファイルを開く場合などにマクロが走らない
>>ようにしたいのです?
>単にコードを実行させたくないのであれば「Exit Sub」をプロシージャの
>先頭に埋め込む方法もあります。こちらは,InsertLinesメソッドですね。

ありがとうございます。
でも、コードを見てもヘルプをかけても今ひとつ分からずに
いるのですが、もうちょっと教えて頂けたらありがたいです。
現在、"Sheet1""Shee2"のシートと"Module1"のモジュール
があり、aute_openで実行して処理が終わる前に、"Sheet2"
"Module1"を削除しようとしているのですが、上記のコード
どのようにすればよいのでしょうか?

【4770】Re:モジュールを削除する!!
発言  bykin  - 03/4/5(土) 0:48 -

引用なし
パスワード
   こんばんわ。

>現在、"Sheet1""Shee2"のシートと"Module1"のモジュール
>があり、aute_openで実行して処理が終わる前に、"Sheet2"
>"Module1"を削除しようとしているのですが

Auto_Open プロシージャは Module1 に書いてあるんでっしゃろ?
ってことは自分自身を削除するってことになります。
通常はそういう処理はせえへんと思うねんけどな。
VBAでやってやれんことはないけどお勧めはしまへん。
2002からはコード自体を操作するマクロはセキュリティの関係で
デフォルトでは実行できへんし・・・

Sheet1のあるブック(A)と、Sheet2とModule1のあるブック(B)に分割して、
ブック(B)にはコマンドボタンとかを用意して、そこからマクロでブック(A)を開いて、
必要な処理をした後保存して閉じる・・・
なんて手段をとったほうがええんとちゃいまっか?
そうすればブック(A)を単独で開いてもマクロが自動実行されることはありまへん。

そういう方法が取れん環境やったらかんにんな。
ほな。

13576 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free