プロが教える店舗&オフィスのセキュリティ対策術

はじめまして。宜しくお願いします。

現在Access2002のVBAをつかってタイトルのようなことを実現したいと思っています。

Dim a As String
Dim b As String

という二つの変数を用意して

「C:\Documents and Settings\デスクトップ\test.csv」という文字列が与えられているとき

変数aには「test.csv」を、変数bには「C:\Documents and Settings\デスクトップ\」を
格納しようとしています。

スマートなやり方がわからず、
文字列の右から一文字ずつ比較して行き、何文字目に「¥」が出てくるかをカウントして、right関数とleft関数で分割を行っています。

このような処理を行う場合、なにか適した関数があると思い探しているのですが、
なかなか見つからず、行き詰っています。(そのような関数があるのかも分からず・・)

もしもなにかお気づきの方が居られましたら、ご教授宜しくお願いします。

A 回答 (3件)

こんにちは。

maruru01です。

フルパスを、ファイル名のみとパスのみに分けるということですね。
現状はInStrRev関数を使用しているということでしょうか。

Win32APIにはPath系関数群というのがあり、いろいろなパスの操作を行えます。
ファイル名のみを取り出すのは、
PathFindFileName関数または、PathStripPath関数で、
パスのみを取り出すのは、
PathRemoveFileSpec関数です。

各関数名で検索してみて下さい。
とりあえず、サンプルが載っているHPを1つ紹介しておきます。

http://plaza5.mbn.or.jp/~heropa/vb122.htm#PathFi …
http://plaza5.mbn.or.jp/~heropa/vb122.htm#PathSt …
http://plaza5.mbn.or.jp/~heropa/vb122.htm#PathRe …
上記3つのおおもとのHP
http://plaza5.mbn.or.jp/~heropa/index.html
ついでにもう1つ
http://homepage1.nifty.com/nishikawa/laboratory/ …

参考URL:http://plaza5.mbn.or.jp/~heropa/index.html,http://homepage1.nifty.com/nishikawa/laboratory/ …
    • good
    • 0
この回答へのお礼

こんにちは。早速のレスありがとうございます。

みなさんのレスの速さと丁寧さに感動しています。
ちょうど私も、InStrRev関数を発見して「使えるのでは」と思っていたところです。
API関数については知識がなかったので、大変勉強になりました。
本当にありがとうございます!

お礼日時:2002/08/26 16:23

Split関数とJoin関数を使ってみてはどうでしょう。



Split関数は、指定した文字で文字列を分割します。

この例では、\を分割のキーにして、
オリジナルの文字列を複数の文字列の集合にします。

集合の最後の文字列を変数aに代入して、それ以外のものを、Join関数を利用してくっつけます。

Join関数でできた文字列の最後尾に、#をくっつけて
文字列bに代入すればできあがり。

スマートか?といわれると疑問ですが、わかりやすい処理です。

また、例に出された内容であれば、
FileSystemObjectを利用して、フォルダ内のファイル一覧を出すことも可能ですよ~。

では。
    • good
    • 0
この回答へのお礼

こんにちは。早速のレスありがとうございます。

回答をいただいたのですがmaruru01さんの方法がうまくいきそうなので
それを使ってみたいと思います。

しかしFileSystemObjectのこともあわせ、貴重なアイデアをいただき
ありがとうございます!

お礼日時:2002/08/26 16:28

私もそうやっています。

それが一般的なやり方なのではないでしょうか。
    • good
    • 0
この回答へのお礼

こんにちは。早速のレスありがとうございます。

他の方からも回答をいただいたので、そちらで試してみようと思います。
レスしていただきありがとうございました!

お礼日時:2002/08/26 16:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!