電子書籍の厳選無料作品が豊富!

お世話になります。
先日、
http://oshiete1.goo.ne.jp/kotaeru.php3?q=383826
こちらの質問で、フォームのコマンドボタンからExcelファイルをACCESSテーブルへインポートする方法を教えていただきました。
で、新たに分らないことがでてきました。
回答で教えていただいた参考URLで、ファイル(Excelファイル)を指定するのに
>strxls = "C:\My Documents\sample_127.xls"
となっておりました。データベースが置いてあるフォルダと同じフォルダを参照したくて、
strxls = "sample_127.xls"
とだけ入れてみたんですが(これでカレントディレクトリを見てくれるだろうと思っていたんですが)、実際に動かしてみると、マイドキュメントのフォルダを参照していました。
カレントディレクトリを参照させるには、どうしたらよいでしょうか。
やはり、フルパスを記述するしかないのでしょうか。

A 回答 (4件)

現在開かれているデータベース名のフルパスは CurrentDb の Name プロパティで取得できますので、これからデータベース名を削ってやればカレントディレクトリのパスが取得できると思います。



具体的には例えば、以下のようなコードではいかがでしょうか?

Dim strxls as String, strDbName As String, strCurrentDir As String, N As Integer
strDbName = CurrentDb.Name
N = Len(strDbName)
Do Until Mid(strDbName, N, 1) = "\"
N = N - 1
Loop
strCurrentDir = Left(strDbName, N - 1)
strxls = strCurrentDir & "sample_127.xls"
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2002/10/24 14:30

>GetFilePathのFunctionが呼び出されてファイルパスを取得してくるということ


>でしょうか?
そうです。
ファンクションで取得すればsample_127.xls以外の同一フォルダ内のExcelシート
などもファイル名の変更で指定できます。

もしくはボタンなどのイベントに記述すればその都度パスを取得できます。
    • good
    • 0

単純にstrxls = "sample_127.xls"の指定ではカレントディレクトリを見には行き


ません。
Accessのオプションにある既定のデータベースを参照しに行ってしまいます。
フルパスで記述するかプロシジャで開いているMDBのパスを取得し同フォルダ内の
sample_127.xlsを参照するかです。

Public Function GetFilePath(FilePath As String) As String
Dim strxls as String
Dim Temp As String
Dim i As Integer
Dim LastYenPlace As Integer

Do
Temp = Right$(FilePath, i)
Temp = Left$(Temp, 1)

If Temp = "\" Then
LastYenPlace = Len(FilePath) - i + 1
GetFilePath = Left$(FilePath, LastYenPlace)
End If

i = i + 1
Loop Until Len(GetFilePath) > 0

End Function

パスを取得しておいてstrxls = GetFilePath & "sample_127.xls"で参照できます。

この回答への補足

済みません。
>パスを取得しておいてstrxls = GetFilePath & "sample_127.xls"で参照

これって、GetFilePath の Function をあらかじめ作っておいて、
>strxls = GetFilePath & "sample_127.xls"
が実行されるときに、GetFilePath のFunctionが呼び出されてファイルパスを取得してくるということでしょうか?
VBA 判っているようでよく判っておりません。

補足日時:2002/10/24 14:30
    • good
    • 0

#1です。


すいません、訂正です。

strCurrentDir = Left(strDbName, N - 1)
は、
strCurrentDir = Left(strDbName, N)
にしてください。
    • good
    • 0

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