故郷を離れて三十数年、関東で暮らす永遠の少年のどーってことない日記
xxSEARCHxx
プロフィール

ST☆FF

Author:ST☆FF
HTTといえばインテルの Hyper-Threading Technology!・・・ではなく、放課後ティータイムのことだと思います。

最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブロとも申請フォーム
ブログ内検索
RSSフィード
リンク

最近の記事


スポンサーサイト 

--/--/-- --:--/--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CATEGORY:スポンサー広告 | CM(-) | TB(-) |

Excel:VBAで、テキストファイルの文字コードを自動判定 

2011/09/08 21:41/Thu
Excelでちょっとしたツールを作る場面があり、その際に調べて実装したコードをメモしときます。
VBAはごくたま~にしか触らないので、すぐに忘却の彼方に消え去ってしまう(-_-;)

' ************************************************************
' Excel2003:VBAで、テキストファイルの文字コードを自動判定
' 参照設定:Microsoft Scripting Runtime
' ************************************************************
Function GetCharSetOfText(ByVal argFolderPath As String, _
ByVal argFileName As String) As String

' リネーム用拡張子
Const textExt = ".txt"

Dim objFSO As Object
Dim objFile As Object
Dim objHtmlFile As Object

Dim charSet As String
Dim resultValue As String

Dim tmpVbName As String
Dim tmpTextName As String

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(argFolderPath & "\" & argFileName)

' TEMPフォルダにコピー後、htmlファイルとして
' ファイル情報を再取得
tmpVbName = Environ("TEMP") & "\" & argFileName
tmpTextName = tmpVbName & textExt

' 万が一の残存ファイル削除
If objFSO.FileExists(tmpVbName) Then
Call objFSO.DeleteFile(tmpVbName, True)
End If
If objFSO.FileExists(tmpTextName) Then
Call objFSO.DeleteFile(tmpTextName, True)
End If

' 作業用ファイル複写
objFile.Copy (tmpVbName)
Set objFile = objFSO.GetFile(tmpVbName)

' リネームし、ファイル情報を再取得
objFile.Name = objFile.Name & textExt
Set objHtmlFile = GetObject(objFile.Path, "htmlfile")

Do While objHtmlFile.readyState <> "complete"
Application.Wait Now + TimeSerial(0, 0, 1)
DoEvents
Loop

' 文字コード取得
charSet = LCase(objHtmlFile.charSet)

Select Case charSet

Case "utf-8", "euc-jp", "shift_jis", "unicode"

' ツールで想定している文字コード
resultValue = charSet

Case Else

' 上記以外は弾いておく
resultValue = ""

End Select

' 作業用ファイル削除
objFile.Delete
Set objFSO = Nothing

GetCharSetOfText = resultValue

End Function
' ************************************************************


スポンサーサイト

CATEGORY:仕事関係 | CM(0) | TB(0) |
xx HOME xx
トラックバックURL
→http://3335.blog106.fc2.com/tb.php/141-6e4f24c2

コメントの投稿














xx HOME xx

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。