「2024年03月」の記事

EXCELクラスモジュールについて(備忘)

2024年3月16日 / エクセル, パソコン, 仕事

Excelのクラスモジュールについて備忘録です。

  1. モジュール名はプロパティのオブジェクト名で変更する。
  2. プロパティは以下のコードで記述。(Privateにすることでカプセル化)
    Option Explicit
    Private m〇〇〇〇 As 型
  3. プロパティをセットするのは以下
    Property Let 〇〇〇〇(i〇〇〇〇 As String)
    m〇〇〇〇 = i〇〇〇〇
    End Property
  4. プロパティを取り出すのは以下
    Property Get o〇〇〇〇()
    o〇〇〇〇 = m〇〇〇〇
    End Property
  5. モジュール記述はSub または Function で記述する
  6. サンプル(ファイル出力をクラス化)
    Option Explicit
    Private mファイル名 As String ‘ファイル名
    Private mIntFree As Integer ‘ファイル番号

    Property Let ファイル名(ファイル名_I As String)
    ‘ファイル名をセットする
    mファイル名 = ファイル名_I
    End Property

    ‘メソッド
    ‘ファイルopen:ファイル名(フルPath)を受け取って、ファイルをOpen
    ‘データWrite:引数でデータを受け取り、ファイルに出力する
    ‘ファイルClose:ファイルをクローズするSub ファイルOpen()
    ‘セットされているファイル名でOpenする
    mIntFree = FreeFile ‘空番号を取得
    Open mファイル名 For Output As #mIntFree
    End Sub

    Sub データWrite(データ_I As String)
    ‘データ_I を ファイルに出力する
    Print #mIntFree, データ_I
    End Sub

    Sub ファイルClose()
    ‘オープンしたファイル番号でクローズする
    Close #mIntFree
    End Sub

  7. 使う側の標準モジュールは以下
    Excelのあるフォルダ(OneDrive以外)にtest.csvを出力します。(内容は”Test Data”)

Sub test_write()
Dim 出力ファイル As New CSV出力
If Left(ThisWorkbook.Path, 4) = “http” Then
MsgBox “OneDrive フォルダでは実行できません”
Exit Sub
Else
出力ファイル.ファイル名 = ThisWorkbook.Path & “\test.csv”
End If
出力ファイル.ファイルOpen
出力ファイル.データWrite (“Test Data”)
出力ファイル.ファイルClose
End Sub

ExcelVBAクラスモジュールの利用方法(個人的意見です)

2024年3月16日 / エクセル, パソコン, 仕事

クラスモジュール化した方がいいと思うことをメモしておきます。
まだまだ初心者の独り言なのでご容赦ください。

  1. ファイルの入出力
    CSV入力の部分をクラス化しておくとメインモジュール側がすっきりします。
    一旦、入力したものをシートに展開するのであれば、標準モジュールでサブプログラム化してもいいのですが、1件ずつ読んで処理する場合はクラス化した方がいいように感じます。
    また、ファイル出力で条件により複数ファイルに出力するような場合は、クラス化することによりメインモジュールがとtrもすっきりします。
  2. マスター検索処理
    エクセルでマスター検索して取引先名や担当者名を表示するような場合、まぁVlookUp 使えばいいんですが・・・
    マスターごとにシートを作って、「キーを1列目、取得する項目を2列目」みたいに標準化しておけばテーブルが増えてもいちいち検索のロジックを記述する必要が無くて簡単になりそうです。
    サンプルに郵便番号辞書を検索するものをアップしておきますが、124,000件でも一瞬で検索できます。(クラス化とスピードは無関係です。)
    (テスト用なので簡単なものです。多分バグもあります。自己責任でお願いします。)

 

プロフィール

志多木義浩
732-0821
広島市南区大須賀町17-5-709
TEL  080-3622-4171


大きな地図で見る

カテゴリー

WordPress

セキュリティニュース


TOPへ戻る

PAGE TOP