アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。
標題の通りです。
現在、エクセルのVBAを使用してちょっとしたものを作成しているのですが、
相対パスを使用して他のファイル(DATファイル)を読みこませようとしています。
しかし、どうにもうまくいかなかったのです。
最初は問題なく読み込めていましたが、あるとき突然パスが見つかりませんとの
エラーメッセージが出るようになりました。
結局、開いているブックの絶対パスを取得するという方法にして思っている結果
は得られることができましたが、どうにも不思議なので質問しました。
コードは以下のように記述していました。

Open "..\ディレクトリ\ファイル.dat" For Input As #1

上記ではだめなのでしょうか?
VBでは問題なかったような気がします。

A 回答 (3件)

相対指定はカレントフォルダから始まります。


デフォルトでは「C:\My Documents」になってるはずですが。

「ツール」→「オプション」
「全般」タブ
カレントフォルダ名
で、指定します。
    • good
    • 2
この回答へのお礼

ありがとうございます。
カレントフォルダが指定されていたのですか。
今確認しました。
でも普通はデフォルトのカレントフォルダなんて指定されてませんよね?
エクセルだけなのでしょうか?
ということは今作っているブックだけをファイルサーバ上に置いて共有しよう
と思っていたのですが、エクセル自体でカレントフォルダが指定されているの
では普通に相対パスを切ってもだめですね。
結局ActiveWorkbook.pathでブック自体の絶対パスを取得する方法にしています。

お礼日時:2002/07/23 09:17

こんにちは。



そのマクロを含むブックのパスなら、単純に下記で取れますが、、、(但し、一度でも保存済みならばです。)

そんなに単純じゃないかな?

Sub Test1()
 MsgBox ThisWorkbook.Path
 MsgBox ThisWorkbook.FullName
 MsgBox Dir(ThisWorkbook.FullName)
End Sub
    • good
    • 0

ファイルを掴まえる点に関して、下記を検討して役立てられませんか。

小生最近調べたもので。
感じるものがなければ、忘れてください。
(1)Dirの利用
Sub test01()
On Error GoTo p02
Worksheets("sheet1").Activate
i = 1
MsgBox Dir("c:\My Documents\")
p01:
Cells(i, 1) = Dir()
i = i + 1
GoTo p01
p02:
MsgBox "終わり"
End Sub
(2)CommonDialogのShowOpen
の利用
(3)GetOpenFilenameの利用
Sub test02()
Dim objXL, temp, opFilter, opTitle
opFilter = "データベース,*.mdb,テキスト,*.txt, 全て,*.*"
opTitle = "タイトル"
  Set objXL = CreateObject("Excel.Application")
temp = objXL.GetOpenFilename(opFilter, , opTitle)
objXL.Quit
If temp <> False Then Path1 = temp
End Sub
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています