ここから本文です

VBAでutf-8を読み込む方法を教えてください 現状 WScript.Shellオブジェクトの...

rca********さん

2019/3/1422:40:54

VBAでutf-8を読み込む方法を教えてください

現状
WScript.ShellオブジェクトのExecメゾットを使い、WinSCPを起動させ、

処理状況を表示するために、出力を変数に取り込んでいるのですが、文字化けを起こしてしまいます。
調べてみると、WinSCPの出力はUTF-8コードらしく、変換が必要なようです。

しかし、調べてみても、テキストファイルを変換するような方法しか見つかりません。
変数に取り込んだUTF-8文字列をSJISに変換して別の変数に入れる方法はありませんか?



回答者様へお願い
"無い"という回答は絶対の自信がある方のみでお願いします。

閲覧数:
29
回答数:
2

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

hot********さん

2019/3/1422:52:00

"C:\sample\test.txt"を読み込む場合です。

Sub aample()
Dim file As String
Dim buf As String
file = "C:\sample\test.txt"
With CreateObject("ADODB.Stream")
.Charset = "UTF-8"
.Open
.LoadFromFile file
buf = .ReadText
.Close
MsgBox buf
End With
End Sub

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

lin********さん

2019/3/1423:02:21

Sub Sample()
Dim s As String
With CreateObject("ADODB.Stream")
.Type = 2
.Charset = "UTF-8"
.Open
.LoadFromFile "D:\Programming\UTF-8.txt"
Do Until .EOS
s = .ReadText(-2)
MsgBox (s)
Loop
.Close
End With
End Sub

簡単な説明です。

「CreateObject("ADODB.Stream")」が、「UTF-8」ファイルを処理するのに必要なものですが、これは実は、「Unicode(=「UTF-16」)」、「Shift-JIS」に対応可能の優れものです。

.Type = 2

が、「テキスト」で、「1」なら「バイナリ」ファイルです。

.Charset = "UTF-8"

もちろん、「UTF-8」を設定しています。

ここを「Shift-JIS」にすれば、「Shift-JIS」に、「Unicode」にすれば、「UTF-16」の処理ができます。

.Open

ファイルを開く準備みたいな感じ?

.LoadFromFile "D:\Programming\UTF-8.txt"

もちろん、ファイルを開いていますので、質問者の環境に合わせてください。

Do Until .EOS

ファイルの終端まで処理(繰り返し)。

s = .ReadText(-2)

1行読み込んでいます。

もし、ファイルを一気に全部読み込みたければ、「s = .ReadText(-1)」となります。

MsgBox (s)

念のため、読み込んだ1行を表示しています。

Loop

を、ふぁるの終端まで繰り返しています。

.Close

閉じています。

を、参考にしてください。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる