回答受付が終了しました

vbsのwriteメソッドで文字コードを指定して書き込む方法を教えてください。

Visual Basic | プログラミング808閲覧xmlns="http://www.w3.org/2000/svg">25

回答(3件)

「Shift-JIS(=「ANSI」)」、「UTF-8(BOM付き)」と「UTF-16LE(BOM付き)」(=「Windows」で言うところの「Unicode」)のみですが、それ以外にも、対応可能みたいです。 今は、プログラムファイルの存在するフォルダ内の「Test.txt」ファイルを読み込み、そのまま、「Result.txt」ファイルに書き込んでいます。 Option Explicit Dim ai, ao, f, m, so, x m = "Shift-JIS" '"UTF-8" "Unicode" Set so = CreateObject("Scripting.FileSystemObject") f = so.GetParentFolderName(WScript.ScriptFullName) Set ai = CreateObject("ADODB.Stream") ai.Type = 2 ai.Charset = m ai.Open ai.LoadFromFile f & "\Test.txt" Set ao = CreateObject("ADODB.Stream") ao.Type = 2 ao.Charset = m ao.Open Do Until ai.EOS x = ai.ReadText(-2) ao.WriteText x, 1 Loop ao.SaveToFile f & "\Result.txt", 2 ai.Close ao.Close Set ai = Nothing Set ao = Nothing Set so = Nothing MsgBox("Finshed!") 簡単な説明です。 m = "Shift-JIS" '"UTF-8" "Unicode" 読み書きするファイルの「文字コード」を指定しています。 Set so = CreateObject("Scripting.FileSystemObject") f = so.GetParentFolderName(WScript.ScriptFullName) 「Windows」のファイルやフォルダを扱う機能を読み込み、プログラムファイルの存在するフォルダを調べています。 Set ai = CreateObject("ADODB.Stream") ai.Type = 2 ai.Charset = m ai.Open ai.LoadFromFile f & "\Test.txt" 「Test.txt」ファイルを読み込むための準備をしています。 Set ao = CreateObject("ADODB.Stream") ao.Type = 2 ao.Charset = m ao.Open 書き出しようファイルを用意しています。 Do Until ai.EOS x = ai.ReadText(-2) ao.WriteText x, 1 Loop ファイルを1行ずつ読み込み、そのまま1行ずつ書き出しています。 ao.SaveToFile f & "\Result.txt", 2 「Result.txt」という名前で保存しています。 ai.Close ao.Close Set ai = Nothing Set ao = Nothing Set so = Nothing MsgBox("Finshed!") あとは、終了処理で、最後に「Finished!」と表示しています。

NEW! この回答はいかがでしたか? リアクションしてみよう

vbsのwriteメソッドということで、 WScript.CreateObject("Scripting.FileSystemObject") を使用しているという前提で回答します。 CreateTextFile OpenTextFile の第3引数の指定で文字コードを指定できます const TristateUseDefault= -2 'システムの既定の設定でファイルを開きます。 const TristateTrue= -1 'Unicode 形式でファイルを開きます。 const TristateFalse= 0 'Ascii 形式でファイルを開きます となります。 詳細は以下リファレンスを参照してください https://docs.microsoft.com/ja-jp/previous-versions/windows/scripting/cc428022(v=msdn.10) https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/opentextfile-method

こんにちは。 unicodeでない「文字コード」でファイルを作成する場合、 「vbsのwriteメソッド」をfsoで作成するという環境では仕様で、できません。 UTF-8の文字コードのファイルを作成する場合 Set fout = CreateObject("ADODB.Stream") fout.Charset = "UTF-8" fout.Open fout.writetext "文字列" fout.writetext "</TR></TABLE></HTML>", 1 fout.SaveToFile vpath & vfile, 2 '上書き保存 fout.Close というようなコードになります 何をしたいのか、で、使い分けないといけません。