Excel VBA質問箱 IV

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

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


73300 / 76738 ←次へ | 前へ→

【7918】Re:標準モジュールをExcelから使えなくしたい
発言  ichinose  - 03/9/23(火) 20:15 -

引用なし
パスワード
   皆さん、こんばんは。
>異なるモジュールから共通に利用したいので、
>標準モジュールにPublic プロシージャを
>書きました。
>しかし、そうすると、Excelの[ツール]−[マクロ]
>メニューからマクロのリストに現れてしまい、
>実行できてしましまいます。
>それらの、プロシージャはフォームからしか使用でき
>ないようにしたいため、Excel上からはマクロとして
>見えないか実行できないようにしたいのですが、
>そのような方法はありますでしょうか。
私は、↑の目的でそうしているのではありませんが、
汎用的なプロシジャーをクラスモジュールに作成しています。
例えば、クラスモジュール(クラス名は、BookIO)に以下のコードを入れたとします。
'================================================
Function bk_open(flname As String, bk As Workbook) As Long
  On Error Resume Next
  Set bk = Workbooks.Open(flname)
  bk_open = Err.Number
  On Error GoTo 0
End Function
'=========================================================
Sub bk_close(bk As Workbook)
  On Error Resume Next
  bk.Close
  On Error GoTo 0
End Sub

インスタンスを作成する場所は、マクロの内容によって異なると思いますが、
標準モジュールに

Public bkio As New BookIO

としておいて、

フォームモジュールでは(コマンドボタンのクリックイベントでの例で)、
'===============================================
Private Sub CommandButton1_Click()
  Dim ブック名 As String
  Dim 開いたブック As Workbook
  ブック名 = "d:\ワークシート.xls"
  If bkio.bk_open(ブック名, 開いたブック) = 0 Then
    MsgBox "ok"
    bkio.bk_close 開いたブック
  Else
    MsgBox "nogood"
    End If
End Sub
等としてはどうでしょうか?
マクロの実行メニューからも見えません。
オブジェクト名の記述分だけ面倒ですが、うまく利用すれば
わかりやすいコード記述にもなると思いますが・・・。
0 hits

【7911】標準モジュールをExcelから使えなくしたい 町奉行 03/9/23(火) 18:05 質問
【7912】Re:標準モジュールをExcelから使えなくしたい かみちゃん 03/9/23(火) 18:16 回答
【7913】Re:標準モジュールをExcelから使えなくしたい INA 03/9/23(火) 18:17 回答
【7916】Re:標準モジュールをExcelから使えなくしたい Asaki 03/9/23(火) 18:56 回答
【7921】Re:標準モジュールをExcelから使えなくしたい Asaki 03/9/23(火) 23:01 発言
【7922】Re:標準モジュールをExcelから使えなくし... 町奉行 03/9/23(火) 23:20 お礼
【7918】Re:標準モジュールをExcelから使えなくしたい ichinose 03/9/23(火) 20:15 発言
【7919】Re:標準モジュールをExcelから使えなくしたい bykin 03/9/23(火) 20:51 回答

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