テキストファイルを開くVBA
- (2010-02-04 10:52:11)
-------------------------------
ログインが必要なサイトが多い。自動ログインするためにIEの自動起動・自動巡回・自動ログインをするvbaを組んで運用している。
サイト側からときどき強制的にパスワード変更求められるとvbaプログラミングのパスワードも変更する必要が出てくる。
プログラムを直接触るのはオペレーションスタッフにはお願いできないので、パスワードの部分だけテキストファイルとして独立させることにした。
セキュリティ上問題が多いが、今回は暗号化はしない。
以前のコード
テイストファイル開くvba:
'passwordfile.txtファイルオープン
Dim FileNo As Integer
Dim PWord As String
FileNo = FreeFile
Open "C:\passwordfile.txt" For Input As #FileNo
'passwordfile.txtファイル行ごとに読み込む
Do Until EOF(FileNo)
Line Input #FileNo, PWord
Loop
Close #FileNo
これはサンプルコードを以前、適当に変更して使用していたもの。
今、見直すと当時何もわからずに書いていた。
・FreeFile関数:未使用のファイル番号を割り振る関数とのこと
ファイル番号ってなんだろうと調べるも不明。しかし、いかにもOSが好きそうな番号の気がする。メモリーにロードされたファイルはOS管理下ではファイル名でなくファイル番号で管理されているのだろうか。
もしそうならOSに近い部分でのプログラミングということになる。ファイル名が使用できずに、空きのファイル番号を割り当ててから使用する?・・・私にはどうも本格的すぎる。
もっと整然として楽な書き方はないかと調べるとFileSytemeObjectというオブジェクトが使えそう。
FileSytemeObjectオブジェクトを使用
昔から「オブジェクト」の意味が分からない。
「オブジェクト」などと、いかにも抽象的な言葉になっているが、要はソースコードが公開されていないサブルーチンだろう、なんて解釈している。
マイクロソフト社の偉大さはこんなパーツに触れるたびに感じる。また感謝の気持ちもわいてくる。
マイクロソフト社の製品間で汎用的に使用できるパーツプログラムは「汎用COMオブジェクト」と呼ばれているらしい。FileSytemeObjectはその一つ。
FileSytemeObjectを使用するには「CreatObjectでインスタンスを作成しメソッドを実行する」といった趣旨の解説を読む。
「インスタンス」「メソッド」「プロパティ」という言葉がステキだ。いかにもオブジェクト指向な言い回しだが、自分なりに解釈してみると
・「インスタンスを作成」とはサブルーチンをメモリーにロードして使える状態(レディ)にすること。
・「メソッドを実行」とはロードしたサブルーチンに提供されているコマンドを実行すること。
・「プロパティを設定」とはロードしたサブルーチンにパラメーターをセットすること。
テキストファイルを開くプログラム:
Private Sub CommandButton1_Click()
Dim PWord As String
Dim FSO As Object
PWord = ""
Filename = "C:\passwordfile.txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
'Scripting.FileSystemObjectとはFileSystemObjectの「プログラムID」だそうだ。
'「プログラムID」ってなんだ?現状、不明。
With FSO.OpenTextFile(Filename, 1)
Do Until .atEndofStream
PWord = .ReadLine
Loop
.Close
End With
Set FSO = Nothing
End Sub
<< OSを入れ替えるスイッチャー< | >ネット時代、どこにオリエンテッドの焦点を合わせる? >>