FC2ブログ
スクウェア・エニックスノベルス『スタンプ・デッド』1~5巻&コミック版、『太陽で台風』1・2巻発売中!
ガンガンノベルズ『魔法少女アーヤ☆アミー』発売中!
徳間デュアル文庫『魔王さんちの勇者さま』1~4巻発売中!
徳間文庫『欠陥妖怪住宅』、『パラレル家族計画』発売中!
ぽにきゃんBOOKSライトノベルシリーズ『ブチ切れ勇者の世界征服』1~2巻発売中!
HJ文庫『カンスト勇者の超魔教導』1~3巻発売中!
ファンタジア文庫『お助けキャラに彼女がいるわけないじゃないですか』1~3巻発売中!
JUMP j BOOKS『ぼくたちは勉強ができない 非日常の例題集』発売中!

受賞歴:
2004年、第1回スクウェア・エニックス小説大賞『入選』
2008年、第5回トクマ・ノベルズEdge新人賞『徳間デュアル文庫特別賞』
2017年、第11回HJ文庫大賞『銀賞』
2017年、ジャンプ小説新人賞’16 Winter 小説フリー部門『銀賞』
2017年、第30回ファンタジア大賞 『金賞』

«  | ホーム |  »

VB詳しいやつちょっと来い

どうも、はむばねです。
はい、今日も今日とて改善活動という名のVB遊びで業務の自動化とかは進めてたわけなんですけどね。
詰んだので、誰か私に教えてたもれ!

やりたいのは、Excelシートのデータを使ってUNIXのシェルスクリプトを自動生成すること。
文字コードはUTF-8です。
で、文字コードの問題まではいいんだ。
ADODBを使って、以下のようにさっくり実装。

'========================================================'
'オブジェクトをセット
Set TS = CreateObject("ADODB.Stream")

'オブジェクトの文字コードと改行コード(LF)を指定する。タイプはテキスト
TS.Type = 2
TS.Charset = "UTF-8"
TS.LineSeparator = 10

'オープン
TS.Open

'先頭におまじないを書き込み(改行を含む)
TS.WriteText "#!/usr/bin/ksh", 1

'Sheet2のラストの行まで処理
k = 1
Do Until k > DestRLast
   ' A列の内容をレコードにセット
   strREC = Cells(k, 1).Value
   ' レコードを書き込み(改行を含む)
   TS.WriteText strREC, 1
   k = k + 1
Loop

'ファイルに出力(上書き保存)
TS.SaveToFile strFILENAME, 2
'========================================================'


ただ、これで生成したシェルを実行しようとすると先頭の行で怒られるんですよね。
ただのおまじないになんやねん、と思ったらどうやら先頭に何か変なもんが挿入されてる様子。
調べてみると、ファッキンなことにBOMが先頭に(3バイト)追加されるとのこと。
なので、一旦バイナリに変換して、3バイト進めた上で読み込み直すという、クソめんどい処理を追加したわけですよ。

'========================================================'
'前述ループ処理の後に以下を追加

' Positionを一度0に戻し、バイナリモードに変更
TS.Position = 0
TS.Type = 1
' Positionを3にしてから読み込むことで最初の3バイト(BOM)をスキップする
TS.Position = 3

' バイナリデータを一旦保存
bytData = TS.Read

'TSを開きなおし、保存しといたバイナリデータをコピー
TS.Close
TS.Open
TS.Type = 1
TS.Write bytData

'ファイルに出力(上書き保存)
TS.SaveToFile strFILENAME, 2
'========================================================'


ネット上では、これで解決することになってるんですけどね。
ただね、実際にこれをやってみると文字コードがSJISに戻ってたんだ。
振り出しに戻っとるやないかwwww
なんなの? 環境の問題なの?
もしくはどっかで勘違いしてるの?

いやまぁでも改行記号はLFのまま残ってるし、日本語使うわけでもないのでシェルスクリプトを生成するって意味では実用段階にはなってるんですけどね。
別段、公の場に出す代物でもないですし。
ただ、なんとなく気持ち悪いよね。
というわけで、教えて詳しい人!

ちなみに、話題的には情報系ですが問題が解決してないので今回は普通のテーマ。
問題が解決したら、解説付きでまとめるかもしれない。
スポンサーサイト



«  | ホーム |  »

プロフィール

hamubane

Author:hamubane

たぶんライトノベル作家的なもの


Twitter

既刊情報

最新コメント

最新記事

カレンダー

02 | 2012/03 | 04
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

月別アーカイブ

カテゴリ

ジャンルランキング

[ジャンルランキング]
日記
364位
ジャンルランキングを見る>>

[サブジャンルランキング]
その他
149位
サブジャンルランキングを見る>>

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR