![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
お世話になります。
先日、
http://oshiete1.goo.ne.jp/kotaeru.php3?q=383826
こちらの質問で、フォームのコマンドボタンからExcelファイルをACCESSテーブルへインポートする方法を教えていただきました。
で、新たに分らないことがでてきました。
回答で教えていただいた参考URLで、ファイル(Excelファイル)を指定するのに
>strxls = "C:\My Documents\sample_127.xls"
となっておりました。データベースが置いてあるフォルダと同じフォルダを参照したくて、
strxls = "sample_127.xls"
とだけ入れてみたんですが(これでカレントディレクトリを見てくれるだろうと思っていたんですが)、実際に動かしてみると、マイドキュメントのフォルダを参照していました。
カレントディレクトリを参照させるには、どうしたらよいでしょうか。
やはり、フルパスを記述するしかないのでしょうか。
No.1ベストアンサー
- 回答日時:
現在開かれているデータベース名のフルパスは 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"
No.4
- 回答日時:
>GetFilePathのFunctionが呼び出されてファイルパスを取得してくるということ
>でしょうか?
そうです。
ファンクションで取得すればsample_127.xls以外の同一フォルダ内のExcelシート
などもファイル名の変更で指定できます。
もしくはボタンなどのイベントに記述すればその都度パスを取得できます。
No.3
- 回答日時:
単純に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 判っているようでよく判っておりません。
No.2
- 回答日時:
#1です。
すいません、訂正です。
strCurrentDir = Left(strDbName, N - 1)
は、
strCurrentDir = Left(strDbName, N)
にしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】フォルダAからダBへファイルを、ファイルの更新日時の条件で、1つづつ移動するには? 3 2022/08/25 09:56
- Visual Basic(VBA) あるフォルダーのファイルを違う親フォルダーのサブフォルダーに移したい 11 2023/02/15 19:00
- Access(アクセス) Access2016のExcelインポートの機能のことで教えてください 1 2022/09/11 14:58
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/21 13:29
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- ノートパソコン EXCEL のドキュメントの回復について 2 2023/03/19 17:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ACCESSのフォームだけを起動す...
-
ACCESSのレコードを削除しても...
-
HP上で商品の検索をしてもら...
-
WWWでデータベースを作成したい...
-
ACCESS2000 VBAでのファイル名指定
-
Access2003でレポートを作ろう...
-
SQLiteファイルへの同時アクセ...
-
階層型データベースとVSAM...
-
ヤフーショッピングでPayPay支...
-
ディスク上のサイズの乖離が大...
-
PostgreSQLについて教えてくだ...
-
新規作成したPostgresqlデータ...
-
Windows版 pg_dumpの結果をログ...
-
CSVファイルをBULK INSERTでSQL...
-
ACCESS VBA;コマンドボックス...
-
Oracle / UNIX ファイルコマン...
-
shellからpostgresqlへの変数の...
-
oracle spool SJIS → UTF-8
-
Windows上のPostgreSQLの完全削...
-
teraterm上でsqlplusにログイン...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスで、OLEサーバーも...
-
ACCESSのフォームだけを起動す...
-
階層型データベースとVSAM...
-
ACCESSのレコードを削除しても...
-
エクセルVBAでcommit,rollback
-
SQLiteファイルへの同時アクセ...
-
SQLPlusでUnicode
-
Access2010でリボン等を非表示...
-
別サーバーのデータベースに、...
-
展開したファイルが一時的に保...
-
データベースが開けません
-
データベース型アプリの設計に...
-
学校にデータベースを導入
-
Access2003でレポートを作ろう...
-
Microsoft Access2003 共有設定
-
HTMLからのデータベース アクセス
-
SQL Serverデータベースファイル
-
データベースのファイルの本体
-
ACCESS+MSDE
-
SQLのデータベースに韓国語を登...
おすすめ情報