テキストを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