[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『CSVで保存したデータの文字化けについて』(苦戦4日目)
テキストデータを文字コード「Unicod」で出力し、 エクセルに貼り付け、加工してCSVで保存しています。
保存したデータをインポートしているのですが、 インポートした先で文字化けしてしまい困っています。
現在のコードは以下になります。
Sub 取込用()
Dim r As Long Dim myCnc1 As String Dim myCnc2 As String Dim myFileName As String Dim sheet1 As Worksheet
Columns("A:P").ClearContents
myFileName = "出力.txt"
Set sheet1 = Worksheets(1) sheet1.Activate
myCnc1 = "TEXT;" myCnc2 = ThisWorkbook.Path & "\" & myFileName
' ================================================================== With ActiveSheet.QueryTables.Add( _ Connection:=myCnc1 & myCnc2, _ Destination:=Range("A1"))
.TextFilePlatform = 932 .TextFileCommaDelimiter = True .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1) .Refresh End With ' ==================================================================
MsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count
With Rows("1:1").Select Selection.AutoFilter ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ ("B1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter Range("A1").Select
End With
MsgBox Range("B2").End(xlDown)
Columns("P:P").Select Selection.Cut Columns("A:A").Select Selection.Insert Shift:=xlToRight Columns("K:K").Select Selection.Delete Shift:=xlToLeft Columns("M:N").Select Selection.Delete Shift:=xlToLeft Range("A1").Select
With Range("A1").CurrentRegion .AutoFilter Field:=4, Criteria1:="0" .Offset(1).EntireRow.Delete .AutoFilter End With
r = Range("D" & Rows.Count).End(xlUp).Row
Columns("D:D").Insert Range("D2:D" & r).FormulaR1C1 = "=LEFT(RC[1],10)"
Range("D2:D" & r).Value = Range("D2:D" & r).Value
Range("E1").Copy Range("D1") Columns("E:E").Delete Columns("H:H").NumberFormatLocal = "0_);[赤](0)" Columns("I:I").AutoFit Rows(r + 1 & ":" & Rows.Count).Delete Columns("D:D").AutoFit
Range("C2").Select Range(Selection, Selection.End(xlDown)).Select
If Range("b2:b2") = "" Then MsgBox "0" Else MsgBox Range("B2:B" & Cells(Rows.Count, "B").End(xlUp).Row).Count End If
Dim book1 As Workbook
Set book1 = Workbooks("F.xlsm") book1.SaveAs Filename:="F取込.csv", _ FileFormat:=xlCSV
End Sub
調べたところ、文字コードを「UTF-8」にすると文字化けしないという事で、 以下のコードをネットで見つけました。 点線で囲った部分に入れてみたのですが…
Dim i As Long Dim j As Long Dim strList As String Dim strSplit() As String Dim adoSt As Object Set adoSt = CreateObject(ADODB.Stream)★ i = 1 With adoSt .Type = adTypeText .Charset = "UTF-8" .Open .LoadFromFile ("出力.txt") Do While Not (.EOS) strList = .ReadText(adReadLine) strSplit = Split(strList, ",") For j = LBound(strSplit) To UBound(strSplit) Cells(i, j + 1) = strSplit(j) Next i = i + 1 Loop .Close End With
実行してみると★部分で「実行時エラー424:オブジェクトが必要です」となります。
だいぶ前に参考書を読みながら作ったもので、 ひどいものなのかもしれないのですが、 どうしたら文字化けしないように出来るのか、 ご教示いただけないでしょうか?
よろしくお願いいたします。
< 使用 Excel:Excel2007、使用 OS:Windows7 >
Microsoft ActiveX Data Object の参照設定はしてますか? (カリーニン) 2015/08/25(火) 21:25
参考HPです。
http://amano41.hateblo.jp/entry/2014/04/25/145637
(カリーニン) 2015/08/25(火) 21:28
よく見たら
>Dim adoSt As Object
ですので参照設定は不要ですね。 (カリーニン) 2015/08/25(火) 21:41
>.Charset = "UTF-8"
これを決め打ちしないでFunctionなどで取得してからSetするようにしてはいかがでしょう?
参考HPです。 http://scripting.cocolog-nifty.com/blog/2007/02/vba_937b.html (カリーニン) 2015/08/25(火) 22:26
.TextFilePlatform = 932 は、Shift_JISを指定したことになっているからです。 マクロ記録をとって確認してはどうですか? もし、Unicode(UTF-8)なら、 .TextFilePlatform = 65001 とする必要があるでしょう。
ちなみに、コードは読んでいませんが、 Set adoSt = CreateObject(ADODB.Stream) は、少なくとも CreateObject("ADODB.Stream")としないとダメでしょう。 (γ) 2015/08/26(水) 02:40
シートのコードネームになりえる名前を変数名に使うのはやめた方が良いと思います。 (Sheet1があればだけど紛らわしいし・・) 最近多いなこういうの。dirとかFindとか。 () 2015/08/26(水) 17:44
外部データの取り込み - テキストファイル を実行すると、
日本語の文字コードを選択するボックスがあるはずです。
http://pasofaq.jp/office/excel/excel2010import.htm
にExcel2007の例が絵つきで説明されています。
そこで Unicode(UTF-8)を選べば良いだけです、
それをマクロ記録とれば、貴君のコードを
.TextFilePlatform = 65001
と修正すればよいことがわかるはずです。(私自身は未確認であるが)
なぜ、コメントしているのに放置されているのか理由が判りません。
色々なサイトの紹介があって、そちらに注力しているのでしょうか。
不思議だ。
なお、Selectionの多用はやめたほうがいいとか、改善点は色々あるのかも
しれないが、まずは課題の中心から対応してください。
(γ) 2015/08/27(木) 20:33
ご教示ありがとうございます。
以下、やってみたことです。
参照HP見ましたが、まったく分かりませんでした…
.TextFilePlatform = 65001 CreateObject("ADODB.Stream") としてみましたが、 文字化けは直りませんでした。
書きましたコードは参考書についていたものを使用し、 マクロの記録を取って、勉強しながら書き直したもので、 まったくの初心者でして、 お三方のおっしゃっている意味を理解したいと思い、 色々と調べたのですが、お恥ずかしいことに分からないのです。
明日、もう一度色々調べてやってみますが、 取り急ぎ現状を報告に参りました。
みなさん、ありがとうございました。 明日、また来ます。
(苦戦4日目) 2015/08/27(木) 20:45
γさま 放置しているつもりはありませんでしたが、 レスが遅れてしまい申し訳ございませんでした。
windowsに入っているソフトで毎日データを落とし、 加工して、そのデータをmacに入れているのですが、 そのmacの方で文字が化けてしまっています。
データを落とす時の文字コードは現在shift-JISです。 ここでUTF-8にしないとだめなのでしょうか?
参照を付けていただいたので、 明日もう一度やりご報告に参ります。 (苦戦4日目) 2015/08/27(木) 20:55
(γ) 2015/08/27(木) 20:58
γさま はじめに書くべきでした。 後出しになってしまい申し訳ございませんでした。 windowsでソフトからデータ抽出、加工 macに切り替えて加工したデータを入れています。 申し訳ありませんでした。
(苦戦4日目) 2015/08/27(木) 21:20
???さま、コメントありがとうございます。 ???さまのコメントを今読んだので、 本日はご教示の方法を試せていませんが、 来週必ずやってみます。 他の方法は参照ページも読んだのですが、 何をどうしたらいいのかまったく分からず。 引き続きやってみます。 ありがとうございました。 (苦戦4日目) 2015/08/28(金) 21:08
大変遅くなりましたが、xlsxブックで渡し、 文字化けせずにデータを移せました。 本当にありがとうございました。 お返事が遅れまして申し訳ございませんでした。 (苦戦4日目) 2015/09/12(土) 21:28
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.