コンボボックスが2つ、オプションボタンが用意してあります。
コンボボックスは年と月。
オプションボタンでは、地域を指定できるようにしてあります。
例えば、年で2001年、月で4月を。
オプションボタンで用意してある地域で北海道を選択したら、
指定したフォルダの中の\200104AAA(北海道).xlsというEXCELのファイルを
開きにいくんですけど、もし、その場所のファイル名の(北海道)の()がファイルの名前を
つけたときに全角になってしまった場合、(本来は半角で名前を付ける仕様にしてあります。)
strFileName = ファイルのある場所のパス & \200104AAA(北海道).xls
Set xlsWork = xlsAPP.Workbooks.Open(strFileName)とすると、エラーになってしまいます。
初心者なので説明が分り難いとは思いますが、よろしくお願いします。
VB6です。
とりあえず、エラーの詳細を載せてください。
例外処理するだけなんじゃあ・・?
パスが違ってたら、エラーになるのは当たり前のような気がします。
ファイルを作るときに気をつけるしかないと思いますが。
()だけの問題でもないと思いますし。。
「ファイル名及びファイルの保存場所が正しいか確認して下さい」となります。
ファイルの保存場所は正しいのですが、ファイル名の()が全角になっていて、
VB6上では、
Set xlsWork = xlsAPP.Workbooks.Open(ファイルの場所 & \200104AAA(北海道).xls)
としているので、(北海道)の()が半角なので、上記のようなエラー内容がでてきます。
そのファイルの保存場所のファイルをすべて半角にするような処理とかにすればいいんですか?(もし、3つファイルがあるなら、3つともファイル名を全角のものは半角にする)
もし、そのやり方が出来るなら、方法はどうしたら良いですか?
ファイル名が()が半角でついていなくて()全角でついているということならば、
ファイル名を変更するか、またはDir関数で自分で編集したファイルが既存するか判定し、もし既存しなければ、全角に名前を編集しなおしてから
Set xlsWork = xlsAPP.Workbooks.Open(strFileName)するとか。
> 本来は半角で名前を付ける仕様にしてあります。
という仕様なのですから、
> ファイルの名前をつけたときに全角になってしまった場合、
というのは、データ側の不整合という事になりますよね。
元データに問題があるわけですから、プログラム以前に、
処理対象のファイル名を修正しておくべきかと思いますよ。
それとも、
> 本来は半角で名前を付ける仕様にしてあります。
の仕様を曲げて、
200104AAA(北海道).xls
200104AAA(北海道).xls
200104AAA(北海道).xls
200104AAA(北海道).xls
の、どのパターンで命名されていても、開けるようにしたいのでしょうか?
であれば、.Workbooks.Open() する直前に、Dir 関数等で、
上記 4パターンのファイルが存在するかを順にチェックしていき、
最初に見つけたものを .Workbooks.Open() するように実装すればよいかと。
StrConvやSplitを使えばなんなく実装できると思いますよ。
もっとも私なら「仕様では半角のファイル名と決まっているのに
全角でも開ける」ような曖昧な処理はしたくないですね。。
収集がつかなくなるし()だけではなく数字の全角も容認しなければ
ならなくなるし。。混沌となりそう。。
魔界の仮面弁士さんのおっしゃるようにデータの不整合ということで
むしろユーザー側にデータが不正であることをきちんと知らせ、
適切なデータを用意させるほうがいいかなと思います。
保存されているEXCELファイルの名前をVB上で変更することは可能ですか?
(例)200104AAA(北海道).xls → 200104AAA(北海道).xls
上記の様に、()カッコを全角から半角に変える。
可能です。
ツイート | ![]() |