- PR -

エクセルVBAから native2ascii を起動する

1
投稿者投稿内容
Ichiro(51)
会議室デビュー日: 2004/09/17
投稿数: 10
お住まい・勤務地: 東京
投稿日時: 2004-10-14 11:51
Excelマクロ開発の初心者です。
他プログラムとの連携で困っております。

【要件】
Excelのマクロより native2ascii コンバータを実行して、
S_Jis形式のファイルをUniCode形式に変換する。

マクロ上で下記の様にコーディングしているのですが
native2ascii が思いどおりに実行されません。

Shell ("native2ascii 変換前ファイル,変換後ファイル")

解決策or代替案をご存知の方、ご教授いただけますでしょうか?
MMX
ぬし
会議室デビュー日: 2001/10/26
投稿数: 861
投稿日時: 2004-10-14 13:43
1:PATH環境変数の確認します 実行プログラムがそこから見えているか?
2:フルパスで指定してみる。
3:CurDirで現在のパスを知る、ChDirで変えてみる
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2004-10-14 13:52
4:native2asciiへの引数の形式が合っているか確認する
#なぜ故「,」…

5:ついでに要件が合っているか確認する
引用:

S_Jis形式のファイルをUniCode形式に変換する。


Unicodeエスケープされたファイル、になるけど良いんでしょうか。
Unicode形式ってのが何を指しているのか判りませんが。
# たぶんいらんお世話だとは思いますが。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-10-14 14:10
「思いどおりに実行されません」というのが気になりますね。
どういう結果を期待していて、実際の結果がどうなっているかをまず書いてみてください。
Ichiro(51)
会議室デビュー日: 2004/09/17
投稿数: 10
お住まい・勤務地: 東京
投稿日時: 2004-10-14 15:07
早々のご回答、ありがとうございます。

環境変数について確認してみましたが、
実行プログラムはちゃんと見えておりました。

ご指摘いただいたとおり要件が不明確でしたので、
再度補足させていただきます。

>4:native2asciiへの引数の形式が合っているか確認する
>5:ついでに要件が合っているか確認する

要件につきまして補足させていただきますと、
通常のテキストファイルをnative2asciiを使用してUnicodeエスケープされたファイルが生成される、
というものです。
現状では想定しているUnicodeエスケープされたファイルが生成されません。

native2asciiの引数の形式を確認したところ、
” native2ascii [options] [inputfile [outputfile]] ”
となっています。
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/native2ascii.html

冷静に考えてみたところVBAの記述に関しての質問になってしまうのですが、
上記の様に外部プログラム(native2ascii) を引数を与えて実行する方法が分かりません。

Webでかなり調べて見たのですが見つかりませんでした。
宜しくお願い致します。
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2004-10-14 16:00
MMXさんの指摘している「フルパスで」とか「現在のディレクトリを」とかの意味はひょっとして把握していないでしょうか。native2ascii.exeだけの話ではなく、引数のファイルにも関係してきますが…。

普通にコマンドラインでnative2asciiを使うときのことを考えて、それをそのまま当てはめればいいんですが。なにか普通にコマンドラインで使ったことすらないのにプログラム上から起動しようとして嵌っているという悪いパターンに陥っているような気がします。
Webで「何」を調べようとしたんでしょうか?
#直接「ExcelVBAでnative2asciiの起動法」なんて事は調べるだけ無意味…

(1)変換するファイルがカレントディレクトリに有る場合
コード:
> native2ascii a.txt u.txt


(2)変換するファイルがカレントディレクトリに無い場合
ファイル名はフルパスで指定する
コード:
> native2ascii c:\inputfiles\a.txt c:\outputfiles\u.txt


(3)パス・ファイル名に空白を含む場合は""で囲む
無論、空白を含まなくても""で括ってかまわない。
コード:
> native2ascii "c:\input files\a.txt" "c:\output files\u.txt"



---
VB(VBA)で"を表すには""とする
コード:
shell "native2ascii ""c:\input files\a.txt"" ""c:\output files\u.txt"""


と言うか普通はファイル名を(固定文字列ではなくどこかからか)渡すだろうから、ファイル名の前後に"が付くようにshellに渡す文字列を作るだけ、ですよね。

---
どうしても駄目(動作しない)ならcmd.exe経由で標準/エラー出力に何が出ているか確認してみればOK
コード:
shell "cmd /K native2ascii 1.txt,2.txt"


とかやれば、コンソールが開いたままで「1.txt,2.txtを読み込むことができません」等と出てくるのが判ります。(windows2000/xp)
空白を含むファイル名を""で囲まずに指定したら、引数が明らかに多いので使い方が表示されます。

[ メッセージ編集済み 編集者: JW 編集日時 2004-10-14 16:04 ]
Ichiro(51)
会議室デビュー日: 2004/09/17
投稿数: 10
お住まい・勤務地: 東京
投稿日時: 2004-10-14 18:37
JWさん、丁寧なご指摘ありがとうございました。
おかげで解決いたしました!!

コマンドラインでnative2asciiを使用する事は出来ていたのですが、

>(3)パス・ファイル名に空白を含む場合は""で囲む

というVBAの記述法(引数の渡し方も含め)を理解していませんでした。

Javaの問題というよりはVBAの質問になってしまいましたが、
回答いただいた皆さま、本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)