- ベストアンサー
VBA:UTF-8で外字出力時のフォント指定
DB:Access2007 PG:VBA テーブルの一部フィールドに中国語文字が含まれていた ので、VBAでCSVファイル出力時、ADODB.Streamに UTF-8を指定して何とか化けずに出力できましたが、中国 語文字だけサイズが小さくなっていました。 出力時中国文字のフォントや文字のサイズを日本語文字同様 にすることができますでしょうか? よろしくお願いします。
- iandyouand
- お礼率22% (27/119)
- その他(プログラミング・開発)
- 回答数1
- ありがとう数9
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
CSVにはフォント情報はありません。 ですので出力時にどうにかしようという考えが間違っています。 文字が見にくければ、表示側でフォントを変えて見ればよいのです。
関連するQ&A
- 【VBA】保存したcsvファイルをメモ帳でUTFに変換する方法を教えてください。
VBAの初心者です。 皆様のお力をお借りしたい次第です。 今私はデスクトップに保存したcsvファイルをUTFに変換し、 windowsメールでアドレスのインポートをしようとしていますが、 csvファイル自体をUTFに変換すると文字化けをしてしまうため、 メモ帳でUTFに変換→csv保存をしたいと思っております。 メモ帳をExcelから命令するにはどうしたらいいでしょうか? 以下はUTFに変換する際に使用させてもらったものです。 Dim JIS, UTF Set JIS = CreateObject("ADODB.Stream") JIS.Open JIS.Type = 2 JIS.Charset = "shift_jis" JIS.LoadFromFile "C:\~\JIS.csv" Set UTF = CreateObject("ADODB.Stream") UTF.Open UTF.Type = 2 UTF.Charset = "utf-8" JIS.CopyTo UTF UTF.SaveToFile "C:\~\UTF.csv", 2 JIS.Close Set JIS = Nothing UTF.Close Set UTF = Nothing
- 締切済み
- Visual Basic
- Excel2000~2003でUTF-8BOM出力
お世話になります。 Excel2000~2003ファイルで、 (現在、Excel2000ファイルを受け取って、 Excel2007上で互換モードとしてVBA作成中) で、ワークシート内容を、 「UTF-8のBOM付き」で、 VBAで、 (出来ましたらFSOを利用して) CSV出力する方法が知りたいです。 ネット上を探すとCSV出力する方法は、 いろいろありましたが、 サンプルを試しに動かして出力されたCSVファイルの 文字エンコードはShift-JISでした。 以上になります。 よろしくお願いします。
- ベストアンサー
- その他MS Office製品
- (VBA )UTF-8(bom無)でテキスト書き出
(VBA )UTF-8(bomu無し)でテキストファイルに書き出す 下記記マクロを使ってテキストファイルに書き出すとShift-JISになるようです。 下記コードを修正するとどのようになりますか ? ------------------------------------------------------------------ 'Chapterシートをテキストファイルへ書き出す Open "C:\Users\NOBU\Desktop\chap_Output.txt" For Output As #1 EndLow = WS2.Cells(Rows.Count, "A").End(xlUp).Row For I = 1 To EndLow Print #1, WS2.Cells(I, "A").Value Next Close #1 ------------------------------------------------------------------ 途中結果です。 UTF-8(BOM有)での書き出す方法はネットで探して 下記コードでうまく書き出し出来たのですが(BOM無し)の方法が良く分かりません。 以下が参考になりそうですが、修正の参考になりませんか ? http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_065.html ------------------------------------------------------------------------ 'ADODB.Streamオブジェクトを生成 Set ado = CreateObject("ADODB.Stream") 'ADODB.Streamで扱う文字コードを設定する ado.Charset = "UTF-8" 'ADODB.Streamを開く ado.Open '開いたADODB.Streamに内容を保管する 'adWriteLineは改行する時に入れる For I = 1 To EndLow ado.WriteText WS2.Cells(I, "A").Value, adWriteLine Next 'ADODB.Streamに保管されている内容をファイルに保存する ado.SaveToFile "C:\Users\Nubo\Desktop\chap_Output.txt", 2 'ADODB.Streamを閉じる ado.Close '終わったのが分かるようにメッセージを出す MsgBox "完了!" Set ado = Nothing End Sub
- ベストアンサー
- Excel(エクセル)
- ■Access エクスポート時に文字数を指定してCSV出力
■Access エクスポート時に文字数を指定してCSV出力 Accessのテーブルをエクスポート時に文字数を指定して、更に文字列の後ろのスペースを含めてCSV形式で出力させたいのですが可能ですか? CSVですので区切り文字は「,」(カンマ)で、全てのフィールドに対して「"」(ダブルクォート)で括りたいのです。 出力結果は下記のイメージになります。 ・1つ目のフィールドは、指定文字数「5文字」で「2文字」のスペースが含まれる ・2つ目のフィールドは、指定文字数「4文字」 ・3つ目のフィールドは、指定文字数「5文字」(2byte表記の為、10byte指定)で、「2文字」 (4byte)をスペースにする。 ---------------------------- "001 ","test","あああ " "002 ","test","いいい " "003 ","test","ううう " 以上になりますが、どなたか教えていただけますでしょうか。 ACCESS初心者の為、大変申し訳ありませんが、詳しい手順もお願い致します。 宜しくお願い致します。
- 締切済み
- その他MS Office製品
- VBAでUTF-8テキストファイル作成したい
VBA,文字コードなどにあかるくない初心者です。 VBAを利用して、エクセルのとあるセルに記載されている文字を UTF-8形式でテキストファイルに出力させたいと考えています。 (多言語対応のため・・・、韓国語や中国語でセルに記載された文字を UTF-8形式でテキストファイルに文字化けしないよう出力させたいためです。) どのように実現が可能か、いくつか検索をしてみましたが 難しくてわかりませんでした。 VBAのサンプルコードを教えていただけないでしょうか。 もしくは、初心者でもわかりやすい実現方法が記載されたサイトを教えていただけないでしょうか。 よろしくお願い致します。 ※今文字コードを意識せずに下記のようなVBAを書いています。(簡略化して記載しています。) Sub test() Open "C:\Sample\Data.txt" For Output As #1 'ファイルを新規作成 'データ書き込み Print #1, Cells(1, 1) Close #1 End Sub
- ベストアンサー
- Visual Basic
- VBAでCSV出力 一番シンプルなコードを教えて
ExcelのVBAで、「1シート目をUTF-8の文字コードでCSV出力」する一番シンプルなコードを教えてください。 ネットで調べるとパラメータを設定したり複数シートを繰り返したり、余計な処理が入っていて、どこが余計な処理なのか分かりません。 (条件) Excelファイルの名前「作業ファイル.xlsx」 1シート目は「作業シート」 出力するファイルは「作業ファイル.csv」 1シート目を一切編集せずそのまんま出力したい (添付画像と全く同様の処理をしたい)
- 締切済み
- Excel(エクセル)
- UTF_16で取得しUTF_8で出力したい!!
こんにちは。 C言語初心者です。以前この件で質問させていただいたのですがエラーがとれず、もう一度質問してしまいました。 今回は、C言語でレジストリからデータをUTF_16で取得し、UTF_8で表示すると言うプログラミングを組みたいのですがどうしても下記のコードではエラーが出てしまいどうしていいかわかりません。 エラーの内容としては、16から8に変換する部分のutf8Sizeの部分で上手くいっていないようで、、、 どうしたらいいかわからないので、もし知っている方がいればよろしくお願いします。 #include<windows.h> #include<stdio.h> void QueryValue(void); int main(void){ QueryValue(); return 0; } void QueryValue(void){ HKEY hkey; DWORD ValueType; DWORD ValueSize; wchar_t Value[1000]; char *utf8String = 0; // UTF-8 文字列バッファへのポインタ size_t utf8Size = 0; // UTF-8 文字列のバイト数 (終端 NUL 含む) int result; // WideCharToMultiByte() の戻り値 /*レジストリキーのオープン*/ RegOpenKeyEx( HKEY_LOCAL_MACHINE, L"SOFTWARE\\Hitachi\\JP1/RemoteControlManager", 0, KEY_ALL_ACCESS, &hkey); ValueSize = 1000; /*レジストリ値の取得*/ RegQueryValueEx( hkey, L"ProgramName", NULL, &ValueType, (LPBYTE)Value, &ValueSize); /*結果の表示(シフトJIS変換’%S’)*/ if(ValueType == REG_SZ) printf("%S\n",Value); else printf("....can't read\n"); /*****************************************************/ //UTF_16からUTF_8変換を行う result = WideCharToMultiByte( CP_UTF8, WC_NO_BEST_FIT_CHARS, Value, -1, utf8String, utf8Size, NULL, NULL); if(result <= 0){ fprintf(stderr,"UTF_16→UTF_8変換エラー(%lu)\n",GetLastError()); } /*結果の表示()*/ if(ValueType == REG_SZ) printf("%s\n",utf8String); else printf("....can't read\n"); /*UTF_8文字列バッファを開放する*/ free(utf8String); /************************************************/ /*終了*/ RegCloseKey(hkey); }
- 締切済み
- C・C++・C#
- UTF8の時のテキストフィールド
PHPの設定をSJISからUTF8に変更しました。 テキストフィールドのサイズで見え方が異なります。 input type="text" size="4" としていたものがUTF8に変更すると実際にはsizeが6~10くらいに広く表示されます。 UTF8を利用する場合テキストフィールドを利用するにあたりSJIS利用時から変更が必要なのでしょうか? ご存知の方教えてください。
- 締切済み
- PHP
- AccessでUTF-8のtxtデータを出力
Shift-JISの.xlsデータをAccessにリンクして、UTF-8・.txtでエクスポートすると、ある項目だけ0→00, 11704→0, 45218→A2 と出力されます。 不思議なのは同じように「0」と入力しても00ではなく0と、あるいは入力した数字そのまま正常に出力されている項目もあるのです。 また、いろんなデータ型関数をためしてみましたが(CLng,CInt,CStr,Len(文字数取得してその文字数で指定して表示),CByte)Access上の表示は正しくとも、出力すると必ず先述のような形になっています。 なんとかして入力した数字をそのまま出力する方法はないでしょうか? 使用環境は OS:win7 Ver:Access2003 です。
- 締切済み
- その他(データベース)
- Excel VBS、ADODB.Streamで改行
助けてください。 Excel VBAでテキストファイル出力をしているのですが、改行をどのように書き込めばいいのかわかりません。 ネットで調べても、改行コードを設定できる情報ばかりで、改行自体を書き入れる方法がわかりませんでした。 \n \r\n などと入力しても文字列としてそのまま出力されていまいます。 Windows 7 64 bit Excel 2007 書き出すファイルが UTF-8 のため、普通の出力ではなくADODB.Streamを使っています。 よろしくお願いします。
- ベストアンサー
- Visual Basic
お礼
ご回答有難うございました。