1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Dim Asan, Bsan ' 1つ目のインスタンス Set Asan = New Person Asan.Name = "わたし" Asan.Age = 30 ' 2つ目のインスタンス Set Bsan = New Person Bsan.Name = "あなた" Bsan.Age = 20 ' それぞれのインスタンスで別のName、Ageを管理できてるかな? Msgbox Asan.Name & "(" & Asan.Age & ")" Msgbox Bsan.Name & "(" & Bsan.Age & ")" ' ここがクラスの定義 ただPublic属性を二つ持つだけ。 Class Person Public Name Public Age End Class |
前回の振り返り
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
Dim clsTxt ' 二つのテキストを読み込む処理 Set clsTxt = New clsText log1 = clsTxt.ReadText("yyyymmdd.log") log2 = clsTxt.ReadText("err_msg.log") Set clsTxt = Nothing ' ここからクラスの定義 Class clsText ' fsoはクラスのインスタンスの中で共有的に使える。 Private fso Private Sub Class_Initialize ' New された時に実行される処理 Set fso = CreateObject("Scripting.FileSystemObject") End Sub Private Sub Class_Terminate ' Nothing とかでインスタンスが破棄された時に実行される処理 Set fso = Nothing End Sub ' Publicで宣言されたコードはインスタンスの外から呼び出しができる。 Public Function ReadText(path) Dim f If fso.FileExists(path) Then Set f = fso.OpenTextFile(path, 1) ReadText = f.ReadAll f.Close Else ReadText = "" End If End Function ' 他にもいろいろfso使う処理を入れていく・・・。 End Class |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
Dim log1 ' テキストを読み込んでリネームする処理 Set log1 = New clsTextFile log1.Path = "yyyymmdd.log" ' インスタンスに固有データを設定 Msgbox log1.ReadText() ' 設定したPathのデータを読み込むので引数がいらなくなった。 If log1.FileNameChange("yyyymmdd-1.log") Then ' ファイル名を変えてみる Msgbox "「" & log1.Path & "」にリネームしました。" ' 新しいファイル名にPathが更新されてる End If Set log1 = Nothing ' ここからクラスの定義 Class clsTextFile ' ファイルパスをインスタンスに持たせてみる。 Public Path Private fso Private Sub Class_Initialize ' New された時に実行される処理 Set fso = CreateObject("Scripting.FileSystemObject") End Sub Private Sub Class_Terminate ' Nothing とかでインスタンスが破棄された時に実行される処理 Set fso = Nothing End Sub ' インスタンスとしてPath持ってるから渡す必要なくなった。 Public Function ReadText() Dim f If fso.FileExists(Path) Then Set f = fso.OpenTextFile(Path, 1) ReadText = f.ReadAll() f.Close Else ReadText = "" End If End Function ' リネームしてみる 成功したら Trueが返ってくる Public Function FileNameChange(NewFileName) Dim Rslt If fso.FileExists(Path) Then With fso.GetFile(Path) .Name = NewFileName ' ファイル名を変える。 Path = .Path ' インスタンスのPathをリネーム後のファイルに更新する。 End With Rslt = True Else Rslt = False End If End Function ' 他にもいろいろfso使う処理を入れていく・・・。 End Class |
1 2 3 4 5 6 7 8 |
Dim log1 Set log1 = New clsTextFile log1.Path = "yyyymmdd.log" ' インスタンスに固有データを設定 Msgbox log1.ReadText() ' 設定したPathのデータを読み込むので引数がいらなくなった。 If log1.FileNameChange("yyyymmdd-1.log") Then ' ファイル名を変えてみる Msgbox "「" & log1.Path & "」にリネームしました。" ' 新しいファイル名にPathが更新されてる End If Set log1 = Nothing |