VBAを用いて、新規フォルダ作成(A)→指定のSQLファイル内のデータを一斉置換(比較演算子)→置換したデータを格納(A)

実現したいこと

・指定の場所に置換済みのSQLファイル(UTF-8)を格納
新規フォルダ(A)作成→
~ループ開始~
【既存データ(SQL文)の中身を置換(比較演算子)
UTF-8で保存
リネームし、(A)へ格納】
~ループ終了~

前提

ネットで調べながら作成しました。
新規フォルダ作成→一斉置換→データ格納
一通り、出来ましたが…
置換したフォルダ内は文字化けしていました。
原因はUTF-8で保存していない為になります。

色々試しましたが、UTF-8での保存が出来ません。
UTF-8で保存出来たからと言って文字化けが消えるかわかりませんが…

発生している問題・エラーメッセージ

  【理想】 ,TIMEZONE.使用有無 ,TIMEZONE.開始時刻   【実際】 ,TIMEZONE.菴ソ逕ィ譛臥┌ ,TIMEZONE.髢句ァ区凾蛻サ

該当のソースコード

VBA

1'プログラム0|変数宣言の指定 2Option Explicit 3 4'1|開始 5Sub Text() 6 7 '2|設定 8 Dim X() As String 9 Dim NewFP As String 'ファイルパス=FP 10 Dim i As Long 11 Dim j As Long 12 Dim sql1 As TextStream 13 Dim sql2 As TextStream 14 Dim WS As Worksheet 15 Dim MY1 As Variant 16 Dim FSO As Scripting.FileSystemObject 17 Dim FP1 As String 18 Dim FP2 As String 19 Dim baseFolder As Scripting.Folder 20 Dim myfile As Scripting.Files 21 Dim My As Scripting.File 22 23 24 '3|シートを1つずつ検証 25 Set WS = ThisWorkbook.Worksheets("Sheet2") 26 27 28 '4|置換リストを取得 29 MY1 = WS.Range("B5:C8").Value 30 31 32 '5|FileSystemObjectの設定 33 Set FSO = New Scripting.FileSystemObject 34 35 36 '6|フォルダの設定 37 FP1 = WS.Range("B2").Value 38 39 40 '7|置換後のテキストファイルを保管するフォルダを作成 41 FP2 = WS.Range("C2").Value & "置換後ファイル" 42 FSO.CreateFolder FP2 43 44 '8|対象フォルダ内の全ファイルを取得 45 Set baseFolder = FSO.GetFolder(FP1) 46 Set myfile = baseFolder.Files 47 48 '9|テキストファイルのみを取得 49 For Each My In myfile 50 If FSO.GetExtensionName(My) = "sql" Then 51 52 53 '10|テキストファイルを読み込む 54 Set sql1 = FSO.OpenTextFile(Filename:=My.Path, IOMode:=ForReading) 55 X = Split(sql1.ReadAll, vbCrLf) 56 57 58 '11|新しいテキストファイルを作成 59 NewFP = FP2 & "\New_" & My.Name 60 FSO.CreateTextFile NewFP 61 Set sql2 = FSO.OpenTextFile(Filename:=NewFP, IOMode:=ForWriting) 62 63 '12|テキストを1行ずつ処理 64 For i = LBound(X) To UBound(X) 65 66 67 '13|エクセルの置換表をもとに変換 68 For j = LBound(MY1) To UBound(MY1) 69 X(i) = Replace(X(i), MY1(j, 1), MY1(j, 2)) 70 Next 71 72 '14|変換後の文章を新しいテキストファイルに書き込む 73 sql2.WriteLine X(i) 74 Next 75 76 '15|テキストオブジェクト解放 77 Set sql1 = Nothing 78 Set sql2 = Nothing 79 End If 80 Next 81 82 '16|オブジェクト解放 83 Set FSO = Nothing 84 Set baseFolder = Nothing 85 Set myfile = Nothing 86 87'18|終了 88End Sub 89

試したこと

.Charset = "UTF-8"を宛がいました。
CreateObject("ADODB.Stream")で行ったからでしょうか?

宛がったコードは、
Dim out As Object
Set out = CreateObject("ADODB.Stream")
out.Charset = "UTF-8"

補足情報(FW/ツールのバージョンなど)

Excelの表です。
バージョンはExcel2016

 |  A  |B          |C          |
ーーーーーーーーーーーーーーーーーーーーーーーー|
1|    |          |          |
ーーーーーーーーーーーーーーーーーーーーーーーー|
2|ファイルパス |\xxx\xx\対象フォルダ  |\xxx\xx\Newフォルダ |
ーーーーーーーーーーーーーーーーーーーーーーーー|
3|    |          |          |
ーーーーーーーーーーーーーーーーーーーーーーーー|
4|    | 置換前      | 置換後      |
ーーーーーーーーーーーーーーーーーーーーーーーー|
5|    | <        | <"       |
ーーーーーーーーーーーーーーーーーーーーーーーー|
6|    | >        | >        |
ーーーーーーーーーーーーーーーーーーーーーーーー|
7|    | ’        | '         |
ーーーーーーーーーーーーーーーーーーーーーーーー|
8|    | ”        | "      |
ーーーーーーーーーーーーーーーーーーーーーーーー|

コメントを投稿

0 コメント