SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

Excel VBAではじめるクラス入門

共有ブックにアクセスしているユーザー情報をログブックに保存するマクロの作成


クラスモジュールのエクスポート・インポート

 作成したクラスモジュールを、他のブックのプロジェクトでも使用できるようにするには、クラスモジュールを単独のファイルに保存します。

 まず、プロジェクトエクスプローラにあるクラスモジュールAccessLogの上で右クリックして、メニューを表示し、[ファイルのエクスポート]を選びます。

 作成したクラスのオブジェクト名が、そのまま保存するファイル名になっています。これでよければ[保存]ボタンを押すと、ファイルに保存されます。

 他のブックでこのクラスモジュールを使う場合は、プロジェクトエクスプローラの上で右クリックすると表示されるメニューから、[ファイルのインポート]を選びます。

 保存したクラスモジュールのファイルを選択すれば、プロジェクトにクラスが追加されます。

 あとは、標準モジュールを追加し、DimステートメントとNewキーワードでクラスのインスタンスを作成して、プロシージャで使用します。

今回作成したサンプルプログラム

 作成した標準モジュールModule1とクラスモジュールAccessLogのコードは、以下の通りです。

標準モジュール Module1 のコード

Sub ログの作成()
    Dim Mylog As New AccessLog

    With Mylog
        .PathName = "c:"
        .CreateLog
    End With
End Sub
クラスモジュール AccessLog のコード
Public PathName As String

Sub CreateLog()
    Dim UserInfo As Variant
    Dim UserCnt As Integer
    Dim Fname As String
    Dim LogMsg As String
    Dim DateName As String

    UserInfo = ActiveWorkbook.UserStatus
    UserCnt = UBound(UserInfo, 1)

    DateName = Replace(Date, "/", "-")
    Fname = PathName & "\AccessLog" & DateName & ".txt"
    Set Fsobj = CreateObject("Scripting.FileSystemObject")
    Set txt = Fsobj.CreateTextFile(Fname, True)

    For i = 1 To UserCnt
        LogMsg = LogMsg & UserInfo(i, 1) & ":" & UserInfo(i, 2) & Chr(13)
    Next

    txt.WriteLine LogMsg
    txt.Close
End Sub

まとめ

 本稿では、簡単な例を使って、Excel VBAでクラスを作成し利用するテクニックを紹介しました。

 「クラスの作成」と言うと、難しいのではという先入観からつい構えがちになりがちですが、「1つのコードをいろいろと形を変えて再利用する」と考えればさほど難しいテクニックではありません。Visual Basic 2005やJavaのような本格的なオブジェクト指向言語のクラス作成とは少しやり方が違いますが、「1つのクラスから複数のオブジェクトを作成して利用する」という考え方はVBAのクラスも変わりありません。

 クラスをうまく利用して、効率のよいマクロ開発をしてみるのも良いのではないでしょうか。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/499 2006/09/11 10:31

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー