外部 UTF-8 ファイル

Posted by muchag | Excel VBA |
初回投稿:2015-05-20 (水) 16:45:27 | 最終更新:2018-09-16 (日) 21:36:23

毎回同じ質問を Google 先生にしているので、いい加減まとめておきます。。。

【環境】
Excel:2010
準備

文字コード UTF-8 に対応するためには、ライブラリの参照設定が必要。

Visual Basec Editor の
[ツール]-[参照設定]
[参照可能なライブラリ ファイル]
[Microsoft ActiveX Data Object *.* Library]
というのが複数並んでいるので、2.5以降にチェック。
(まぁ、最新がよいのではないでしょうか)

読み込み
文字コード変換
  1. Dim csv As String
  2.  
  3. With CreateObject("ADODB.Stream")
  4.     .Charset = "UTF-8"
  5.     .Open
  6.     .LoadFromFile "C:\hoge.csv"
  7.     csv = .ReadText
  8.     .Close
  9. End With

これで、変数 csv に、ファイル全体文字列が格納されているので
適宜整形して、利用。

改行コード変換

改行コード については、こんな感じ。

Excel 用に vbCrLf で統一しておく方が問題が出ないので
下記のように置換すると吉。

  1. csv = Replace(csv, vbLf, vbCrLf)
  2. csv = Replace(csv, vbCr, vbCrLf)
利用
CSV
  1. Dim arrLines As Variant
  2. arrLines = Split(csv, vbCrLf)
  3.  
  4. Dim arrFieldsAs Variant
  5. For index = 0 To UBound(arrLines)
  6.  
  7.     arrFields= Split(arrLines(index ), ",")
  8.  
  9. Next
書き出し

読み込み編とは時期が異なったので、書き方が全然違うけど、
そこは気にしない!

  1. Dim string as String
  2. Dim i As Long
  3. Dim j As Integer
  4.  
  5. Dim outStream As ADODB.Stream
  6. Set outStream = New ADODB.Stream
  7.  
  8. 'ADODB.Stream の設定
  9. With outStream
  10.     .Type = adTypeText
  11.     .Charset = "UTF-8"
  12.     .LineSeparator = adLF '改行コードをLFに指定(adCRLF)
  13.     .Open
  14. End With
  15.  
  16. ' データの書き出し
  17. For i = 1 To 100
  18.     For j = 1 To 5
  19.         If j > 1 Then string = string & ","
  20.        
  21.         string = string & Cells(i, j).Value
  22.     Next j
  23.    
  24.     outStream.WriteText string , adWriteLine
  25. Next i
  26.  
  27. 'BOMを削る前処理
  28. outStream.Position = 0 'ファイル先頭にセット
  29. outStream.Type = adTypeBinary 'バイナリに変更
  30. outStream.Position = 3 'BOMの3バイト分スキップ
  31.  
  32. 'BOMを削った分をコピー
  33. Dim outStreamCopy As New ADODB.Stream
  34. outStreamCopy.Type = adTypeBinary
  35. outStreamCopy.Open
  36. outStream.CopyTo outStreamCopy
  37.  
  38. 'CSVファイルに保存
  39. outStreamCopy.SaveToFile Activebook.Path & "\text_utf8n.csv", adSaveCreateOverWrite
  40.  
  41. 'クローズ処理
  42. outStream.Close
  43. outStreamCopy.Close
  44. Set outStream = Nothing
  45. Set outStreamCopy = Nothing
ユーティリティー

毎回書いていられないので、ユーティリティークラスを作成。

utilUtf8
  1. Option Explicit
  2.  
  3. Public Function inputStream(ByVal filePath As String) As String
  4.    
  5.     Dim strWhole As String
  6.      
  7.     With CreateObject("ADODB.Stream")
  8.         .Charset = "UTF-8"
  9.         .Open
  10.         .LoadFromFile filePath
  11.         strWhole = .ReadText
  12.         .Close
  13.     End With
  14.  
  15.     strWhole = Replace(strWhole, vbLf, vbCrLf)
  16.     strWhole = Replace(strWhole, vbCr, vbCrLf)
  17.  
  18.     Set inputStream = strWhole
  19.        
  20. End Function
  21.  
  22. Public Function getOutStream(ByVal outStream As ADODB.Stream) As ADODB.Stream
  23.    
  24.     'ADODB.Stream の設定
  25.     With outStream
  26.         .Type = adTypeText
  27.         .Charset = "UTF-8"
  28.         .LineSeparator = adLF '改行コードをLFに指定
  29.         .Open
  30.     End With
  31.    
  32.     Set getOutStream = outStream
  33.        
  34. End Function
  35.  
  36. Public Sub outputStream(ByVal outStream As ADODB.Stream, ByVal filePath As String, ByVal noBom As Boolean)
  37.  
  38.     If noBom Then
  39.         'BOMを削る前処理
  40.         outStream.Position = 0 'ファイル先頭にセット
  41.         outStream.Type = adTypeBinary 'バイナリに変更
  42.         outStream.Position = 3 'BOMの3バイト分スキップ
  43.     End If
  44.  
  45.     'BOMを削った場合に備えてコピーを出力
  46.     Dim outStreamCopy As New ADODB.Stream
  47.     outStreamCopy.Type = adTypeBinary
  48.     outStreamCopy.Open
  49.     outStream.CopyTo outStreamCopy
  50.  
  51.     'ファイルに保存
  52.     outStreamCopy.SaveToFile filePath, adSaveCreateOverWrite
  53.    
  54.     outStreamCopy.Close
  55.     Set outStreamCopy = Nothing
  56.    
  57.     outStream.Close
  58.    
  59. End Sub
参考サイト

Excel VBAでUTF-8(BOM無し)に変換してCSV出力してみる
→書き出し編。参考というより、ソースを頂戴しました。ありがとうございます♪

Posted by muchag | Excel VBA |
初回投稿:2015-05-20 (水) 16:45:27 | 最終更新:2018-09-16 (日) 21:36:23

Excel VBA Index

Posted by muchag | Excel VBA |
初回投稿:2015-05-20 (水) 16:41:22 | 最終更新:2019-02-04 (月) 17:15:21

私が初めて仕事で携わった言語。
もう長いお付き合いになりますね。。。
今後ともよろしくお願いします!

丸っきりの書きかけ項目は Not found になる。
 

セル
  1. コピー、切り取り、貼り付け
Tips
  1. HTTP リクエスト
  2. 外部 UTF-8 ファイル
  3. コントロールの動的配置
  4. 正規表現
  5. 宣言と初期化
  6. 入力規則の設定
  7. 配列
    1. 連想配列
  8. メソッドの引数
  9. クラス
    1. 雛型
  10. VBE のカラーリング
番外:本体編
  1. 画像抽出

 

がい~ん!(はまったこと)
  1. 解決済み(たぶん)
    1. 引数があるメソッドの呼び出しエラー
  2. 未解決

 

参考

MSDN:Excel VBA リファレンス

Posted by muchag | Excel VBA |
初回投稿:2015-05-20 (水) 16:41:22 | 最終更新:2019-02-04 (月) 17:15:21

公式チュートリアル

Posted by muchag | Symfony 1.x |
初回投稿:2015-05-14 (木) 14:47:06 | 最終更新:2015-11-20 (金) 17:54:06

公式のチュートリアルに一覧表がないので
一覧のためのページ。

gentle-introduction
  1. 第1章 – symfony の紹介
  2. 第2章 – symfony のコードを探求する
  3. 第3章 – symfony を動かす
  4. 第4章 – ページ作成の基本
  5. 第5章 – symfony を設定する
  6. 第6章 – コントローラーレイヤーの内側
  7. 第7章 – ビューレイヤーの内側
  8. 第8章 – モデルレイヤーの内側 (Doctrine)
  9. 第9章 – リンクとルーティングシステム
  10. 第10章 – フォーム
  11. 第11章 – Eメール
  12. 第12章 – キャッシュ
  13. 第13章 – 国際化とローカライゼーション
  14. 第14章 – Admin ジェネレーター
  15. 第15章 – ユニットテストと機能テスト
  16. 第16章 – アプリケーションの運用ツール
  17. 第17章 – symfony を拡張する
  18. 第18章 – パフォーマンス
  19. 第19章 – symfony の設定ファイルをマスターする
フォーム

目次:Forms
(やっと目次を発見できた・・・)

  1. 第1章 – フォームの作成
  2. 第2章 – フォームのバリデーション
  3. 第3章 – Web デザイナのためのフォーム
  4. 第4章 – Propel との統合
jobeet 1.4 on doctrine
  1. 1日目: プロジェクトを始める
  2. 2日目: プロジェクト
  3. 3日目: データモデル
  4. 4日目: Controller と View
  5. 5日目: ルーティング
  6. 6日目: モデルの詳細
  7. 7日目: カテゴリページで遊ぶ
  8. 8日目: ユニットテスト
  9. 9日: 機能テスト
  10. 10日目: フォーム
  11. 11日目: フォームをテストする
  12. 12日目: アドミンジェネレータ
  13. 13日目: ユーザー
  14. 14日目: フィード
  15. 15日目: Web サービス
  16. 16日目: メーラー
  17. 17日目: 検索
  18. 18日目: AJAX
  19. 19日目: 国際化とローカライゼーション
  20. 20日目: プラグイン
  21. 21日目: キャッシュ
  22. 22日目: デプロイ
  23. 23日目: 別の視点から symfony を見る
1.4 Doctrine

Doctrine のテーブル継承の活用

1.2 Doctrine

Doctrine

Posted by muchag | Symfony 1.x |
初回投稿:2015-05-14 (木) 14:47:06 | 最終更新:2015-11-20 (金) 17:54:06

Tail Windowsアプリケーション版

Posted by muchag | Tool |
初回投稿:2015-05-14 (木) 12:30:37 | 最終更新:2015-09-02 (水) 17:30:10

リアルタイム更新ログ監視。

【環境】
Tail:1.10
経緯

Symfony を使っていて、まだログの出し方がよくわからず
XAMPP の PHP エラーログを見ていた。

毎回ファイルを閉じて開いてを繰り返していて
不便すぎると思い、リアルタイム更新のアプリを探したところヒット!

DL

Tail

使い方
起動

DL して解凍した中の tail.exe をダブルクリック。

ファイルを開く

当該ファイルを tail へ D&D。

このとき、文字コード、改行コードが異なっているとエラーで開かない、かも?

実体験では、Shift-JIS のファイルを UTF-8 設定で開こうとしたところ
「改行コードが会いません」と言われ、開けなかったが
一旦、Shift-JIS 設定で開きなおしてから、再度 UTF-8 設定で開いたら開けた。。。

まぁ、ちゃんと設定を合わせてから開くに越したことはないよね。

Posted by muchag | Tool |
初回投稿:2015-05-14 (木) 12:30:37 | 最終更新:2015-09-02 (水) 17:30:10

コマンドプロンプト

Posted by muchag | Windows |
初回投稿:2015-05-01 (金) 17:14:37 | 最終更新:2015-05-01 (金) 17:14:37

レイアウト

コマンドプロンプトを利用していて、いつもmログ制限が困るなぁ
(実行結果がズラズラ並ぶと、最初の方は見られない)
と思っていたら、これを変更できる方法があった。

コマンドプロンプト ウィンドウ左上のアイコンをクリック。
[プロパティ]
[レイアウト] タブ
[画面バッファーのサイズ] から変更可能。

Posted by muchag | Windows |
初回投稿:2015-05-01 (金) 17:14:37 | 最終更新:2015-05-01 (金) 17:14:37
« 前ページへ