外部 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以降にチェック。
(まぁ、最新がよいのではないでしょうか)

読み込み
文字コード変換
[evba language=”vb” firstline=”” highlight=””] Dim csv As String

With CreateObject(“ADODB.Stream”)
.Charset = “UTF-8”
.Open
.LoadFromFile “C:\hoge.csv”
csv = .ReadText
.Close
End With
[/evba] これで、変数 csv に、ファイル全体文字列が格納されているので
適宜整形して、利用。

改行コード変換

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

Excel 用に vbCrLf で統一しておく方が問題が出ないので
下記のように置換すると吉。
[evba language=”vb” firstline=”” highlight=””] csv = Replace(csv, vbLf, vbCrLf)
csv = Replace(csv, vbCr, vbCrLf)
[/evba]

利用
CSV
[evba language=”vb” firstline=”” highlight=””] Dim arrLines As Variant
arrLines = Split(csv, vbCrLf)

Dim arrFieldsAs Variant
For index = 0 To UBound(arrLines)

arrFields= Split(arrLines(index ), “,”)

Next
[/evba]

書き出し

読み込み編とは時期が異なったので、書き方が全然違うけど、
そこは気にしない!
[evba language=”vb” firstline=”” highlight=””] Dim string as String
Dim i As Long
Dim j As Integer

Dim outStream As ADODB.Stream
Set outStream = New ADODB.Stream

‘ADODB.Stream の設定
With outStream
.Type = adTypeText
.Charset = “UTF-8”
.LineSeparator = adLF ‘改行コードをLFに指定(adCRLF)
.Open
End With

‘ データの書き出し
For i = 1 To 100
For j = 1 To 5
If j > 1 Then string = string & “,”

string = string & Cells(i, j).Value
Next j

outStream.WriteText string , adWriteLine
Next i

‘BOMを削る前処理
outStream.Position = 0 ‘ファイル先頭にセット
outStream.Type = adTypeBinary ‘バイナリに変更
outStream.Position = 3 ‘BOMの3バイト分スキップ

‘BOMを削った分をコピー
Dim outStreamCopy As New ADODB.Stream
outStreamCopy.Type = adTypeBinary
outStreamCopy.Open
outStream.CopyTo outStreamCopy

‘CSVファイルに保存
outStreamCopy.SaveToFile Activebook.Path & “\text_utf8n.csv”, adSaveCreateOverWrite

‘クローズ処理
outStream.Close
outStreamCopy.Close
Set outStream = Nothing
Set outStreamCopy = Nothing
[/evba]

ユーティリティー

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

utilUtf8
[evba language=”vb” firstline=”” highlight=””] Option Explicit

Public Function inputStream(ByVal filePath As String) As String

Dim strWhole As String

With CreateObject(“ADODB.Stream”)
.Charset = “UTF-8”
.Open
.LoadFromFile filePath
strWhole = .ReadText
.Close
End With

strWhole = Replace(strWhole, vbLf, vbCrLf)
strWhole = Replace(strWhole, vbCr, vbCrLf)

Set inputStream = strWhole

End Function

Public Function getOutStream(ByVal outStream As ADODB.Stream) As ADODB.Stream

‘ADODB.Stream の設定
With outStream
.Type = adTypeText
.Charset = “UTF-8”
.LineSeparator = adLF ‘改行コードをLFに指定
.Open
End With

Set getOutStream = outStream

End Function

Public Sub outputStream(ByVal outStream As ADODB.Stream, ByVal filePath As String, ByVal noBom As Boolean)

If noBom Then
‘BOMを削る前処理
outStream.Position = 0 ‘ファイル先頭にセット
outStream.Type = adTypeBinary ‘バイナリに変更
outStream.Position = 3 ‘BOMの3バイト分スキップ
End If

‘BOMを削った場合に備えてコピーを出力
Dim outStreamCopy As New ADODB.Stream
outStreamCopy.Type = adTypeBinary
outStreamCopy.Open
outStream.CopyTo outStreamCopy

‘ファイルに保存
outStreamCopy.SaveToFile filePath, adSaveCreateOverWrite

outStreamCopy.Close
Set outStreamCopy = Nothing

outStream.Close

End Sub
[/evba]

参考サイト

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-11-04 (月) 19:53:14

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

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

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

 

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

 

参考

MSDN:Excel VBA リファレンス

Posted by muchag | Excel VBA |
初回投稿:2015-05-20 (水) 16:41:22 | 最終更新:2019-11-04 (月) 19:53:14

公式チュートリアル

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
« 前ページへ