< | >

テキストファイルを開く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を入れ替えるスイッチャー< | >ネット時代、どこにオリエンテッドの焦点を合わせる? >>
search
layout
admin

[▲page top]