【vba】nkf+Accessで改行コードCR→CRLF置換

FileMakerGOからエクスポートしたテキストファイルの改行コードはCR。
そのデータを加工する専用MS-Access開発の為、改行コードの変換出来るコマンドラインソフトを検索。

一番良さそうだったのがUNIXコマンド:nkfのWindows移植版。

[文字コード変換コマンドの nkfの使い方と実例をまとめました。]

VBAから実行させたいこの下記のコマンド

C:Progra~1Common~1
kf
kf.exe -s -Lw --overwrite FileMakerGO出力ファイル.txt

最初、VBAのshellでトライしましたがエラーが消えず断念 😮
次に、VBAからWindows Script Host (WSH)経由で実行を試みましたがこれも失敗 😮

exeの後ろに長いオプションが有る時は、いつも失敗している私:-(

今回も、いつもの最終手段。
FileSystemObjectでDOSのバッチファイルを作り、その中に長いオプション付きコマンドを書込み保存。
それをCMD.exeで実行。

やった、動いた!
やっぱこの方法が一番確実。枯れた技術、万歳 😀

Private Sub btn改行コード変換_Click()

Dim myEexFile As String
Dim myOption As String
Dim myFMGOfile As String
Dim myCOMMAND As String

myEexFile = "C:Progra~1Common~1
kf
kf.exe"
myOption = "-s -Lw --overwrite"
myFMGOfile = Me![txtFileMakerGOファイル名] 
myCOMMAND = myEexFile & " " & myOption & " " & myFMGOfile

Dim FSO As New FileSystemObject
Dim st As TextStream
Set st = FSO.CreateTextFile("C:katabefmgoCR2winCRLF.bat")

st.WriteLine ("@echo off")
st.WriteLine ("@echo off")
st.WriteLine ("echo ---------------------------------------------")
st.WriteLine ("echo ★一瞬で見えないメッセージ★")
st.WriteLine ("echo iPhone、iPod作成受注データを取り込み")
st.WriteLine ("echo 改行コードCRLFへ変更します ")
st.WriteLine ("echo ---------------------------------------------")
st.WriteLine (myCOMMAND)
st.WriteLine ("exit")
st.Close

Shell ("cmd.exe /K C:katabefmgoCR2winCRLF.bat")

DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE FROM JANlistテーブル"
DoCmd.SetWarnings True

DoCmd.TransferText データインポートします:-) 

End Sub

完成はしたもののオフコンとの連携が解決できず誰も使っていない
FileMakerGOアプリ「なんちゃってハンディーターミナル」。

それとは逆に、評判がイイのが単純に情報を集めるデータコレクタ機能 🙂
「バーコードスキャン、数量、単価、保存」を繰り返すシンプルな画面で、データ加工は専用MS-Acess。

nkf.exeを使った改行コード変換は、この専用Accessのインポート部分です。

このデータコレクター機能+加工用Accessがあれば、消費税アップ時に依頼されるであろうプライスカード再発行業務が少し効率よく出来ると思います。

それにしても、プライスカードは外税にすべきですよね!?

消費税アップごとに何百枚、何千枚の内税プライスカードを作り変えてたら時間と経費が猛烈に掛かり中小企業はつぶれてしまう。
それをお役人は分かってくれてるのかな・・・ 😕

その上で、軽減税率を本気で導入するつもりなんだろうか?
オフコン屋に見積りさせたら、商品分類ごとで税率を変えるプログラムは複雑で会社が潰れそうな高い見積額になりそうなんですけど・・・・。
どこの政党だ、熱心に・・・

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA