プロが教えるわが家の防犯対策術!

タイトルの通りです。
簡単なプログラムを作ってみました。
このような事は出来ないのでしょうか。
教えてください。
宜しくお願いします。

☆サンプルプログラム☆
   ↓
Sub test()
Dim Stm As Object
Dim sText As String

Const adCRLF = -1
Const adReadAll = -1
Const adTypeText = 1

sText = "あああ"
Set Stm = CreateObject("ADODB.Stream")
Stm.Open
Stm.Charset = "UTF-8"
Stm.WriteText sText
ActiveSheet.Range("A1").Value = Stm.ReadText()
Stm.Close
Set Stm = Nothing
End Sub

A 回答 (1件)

こんにちは。

KenKen_SP です。

UTF-8 で書かれたテキストファイルの文字列を読み込んでコードを
試してみましたが、そのまま動きましたね、、意図は何ですか?

Excel2000 以上なら Unicode 対応してますので、Excel内部でのみの
処理なら特に問題はないと思います。理由があって別のキャラセット
に変換するならもう一つ ADOBE.Stream を CreateObject し、そちら
の Charset を変換したいキャラセットに設定してから、WriteText
するなり、CopyTo すればいいです。

こんな感じ。

Sub CONVERT_CHARSET()
  
  '参照設定するなら:Microsoft ActiveX Data Objects x.x Library
  Dim SRC As Object
  Dim DST As Object
  Dim strFILEPATH As String
  
  Const adTypeText = 2
    
  strFILEPATH = Application.GetOpenFilename("TEXTファイル (*.txt), *.txt")
  If UCase$(strFILEPATH) = "FALSE" Then Exit Sub

  Set SRC = CreateObject("ADODB.Stream")
  With SRC
    .Open
    .Charset = "UTF-8"
    .Type = adTypeText
    .LoadFromFile strFILEPATH
    .Position = 0
  End With
  Set DST = CreateObject("ADODB.Stream")
  With DST
    .Open
    .Charset = "Shift_JIS"
    .Type = adTypeText
  End With
  SRC.CopyTo DST
  DST.Position = 0
  
  ActiveSheet.Range("A1").Value = DST.ReadText()
  
  SRC.Close
  DST.Close
  Set SRC = Nothing
  Set DST = Nothing

End Sub
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!