テキストをEXCELシートを取り込むマクロ

同じような設定のサーバの台数が多いとき、各サーバのConfigをEXCEL表で並べて比較したいと思ったときに作成しました。

これで”ホスト固有の設定”や”共通であるべき設定”が一目瞭然となります。(EXCEL2010で動作してます。)

Option Explicit

Private FSO, Drv, TS, ForReading, TEST '
Private xlAPP As Application ' Applicationオブジェクト
Private strFILENAME, strREC As String ' OPENするファイル名(フルパス)
Private lngColumn, lngLine As Long ' '
Const cnsFILTER = "全てのファイル (*.*),*.*", cnsTITLE = "テキストファイル読み込み処理"

'メイン
Sub ReadConfFile()

Set FSO = CreateObject("Scripting.FileSystemObject")
Set xlAPP = Application ' Applicationオブジェクト取得
lngColumn = 1 ' 列の初期値
ForReading = 1 ' ファイル読み取りのみ可

Do Until ForReading = 2
 ' 「ファイルを開く」のフォームでファイル名の指定を受ける
xlAPP.StatusBar = "読み込むファイル名を指定して下さい。"
strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, _
Title:=cnsTITLE)
' キャンセルされた場合は以降の処理は行なわない
If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub
' 行読み取りの実行Fonction
ReadLine (lngColumn)
lngColumn = lngColumn + 1
Loop

End Sub

' ファイル読み込み関数
Function ReadLine(lngColumn)
lngLine = 1

Cells(lngLine, lngColumn).Value = strFILENAME ' 指定ファイルのファイル名を代入
Set TS = FSO.OpenTextFile(strFILENAME, 1) ' 指定ファイルをOPEN(入力モード)

' ファイルのEOF(End of File)まで繰り返す
Do Until TS.AtEndOfStream
' 改行までをレコードとして読み込む
strREC = TS.ReadLine
' 行を加算しA列にレコード内容を表示(先頭は2行目)
lngLine = lngLine + 1
Cells(lngLine, lngColumn).Value = strREC
Loop

' 指定ファイルをCLOSE
TS.Close

End Function