記事検索

検索ワードを入力してください。
Sky Tech Blog
【VBA】インターフェイスの​使い方

【VBA】インターフェイスの​使い方

この記事は、Excel VBAにおけるインターフェイスの使い方について説明しています。インターフェイスを使用することで、ファイルごとに異なる処理を実装し、コードの見やすさとメンテナンス性を向上させる方法を紹介します。

Excel VBAのインターフェイスの使い方に関して、簡単に説明します。
VBAで処理を行う際に、全体的な流れは同じだけど、ファイルごとに一部処理を変えたいときがあると思います。そういうときにインターフェイスを使うと、うまく解決できることがあります。

Public Sub Main()
    
    'ファイルを開く
    Call OpenFile()
    
    '処理をする
    Call Process()
    
    'ファイルを閉じる
    Call CloseFile()
    
End Sub
Public Sub Process()
    Dim objFile As InterfaceBase    ← Interfaceクラスの元となるクラス名で宣言する
    
    Select Case ファイル名
        Case ファイルA : objFile = New InterfaceFileA()    ← 作成時はそれぞれのクラス名で作成する
        Case ファイルB : objFile = New InterfaceFileB()    ← 作成時はそれぞれのクラス名で作成する
    End Select
    
    
    Do While True
        
        ファイルから1行読み取る
        
        'ループ判定処理
        If False = objFile.IsLoop() Then
            Exit Do
        End If
        
        'ファイル処理を行う
        Call objFile.Process()
        
    Loop
    
End Sub

インターフェイスの基本となるクラスには、必要なメソッド(関数)やプロパティの宣言のみ行います。メソッド(関数)の処理内容の記載はここでは不要です。

■ Interfaceクラス

クラスモジュール名:InterfaceBase

'ループ判定処理
Public Function IsLoop() As Boolean
    
End Function

'ファイル処理
Public Function Process() As Boolean
    
End Function

ファイルごとのカスタマイズしたい処理ごとにインターフェイスクラスを作成します。
大きなポイントは2つです。

  • クラスの先頭に「Implements InterfaceBase」を記載すること
  • 関数名の先頭に「InterfaceBase_XXXX」を追加すること

■ ファイルA用クラス

クラスモジュール名:InterfaceFileA

Implements InterfaceBase     ← ここにInterfaceクラスの元となるクラス名を記載

'ループ判定処理
Public Function InterfaceBase_IsLoop() As Boolean
    
    ファイルA用のループ判定処理を記載する
    
End Function

'ファイル処理
Public Function InterfaceBase_Process() As Boolean
    
    ファイルA用のファイル処理を記載する
    
End Function

■ ファイルB用クラス

クラスモジュール名:InterfaceFileB

Implements InterfaceBase     ← ここにInterfaceクラスの元となるクラス名を記載

'ループ判定処理
Public Function InterfaceBase_IsLoop() As Boolean
    
    ファイルB用のループ判定処理を記載する
    
End Function

'ファイル処理
Public Function InterfaceBase_Process() As Boolean
    
    ファイルB用のファイル処理を記載する
    
End Function

このサンプルくらいのプログラムならファイルごとにProcess関数を用意して、対象ファイルごとに振り分けても実現はできますが、カスタマイズしたい種類が多くなってくると同じような関数が増えてコードが見にくくなってしまいます。

インターフェイスクラスを使うと、差分の部分だけの関数になるのでコードも見やすくなります。また、あとで共通の処理を追加したい場合も1か所だけ直せば済むようになるのでメンテナンスも楽になります。

慣れるととても便利なので、ぜひとも使ってみてほしいと思います。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム