こんにちは。
標題の通りです。
現在、エクセルのVBAを使用してちょっとしたものを作成しているのですが、
相対パスを使用して他のファイル(DATファイル)を読みこませようとしています。
しかし、どうにもうまくいかなかったのです。
最初は問題なく読み込めていましたが、あるとき突然パスが見つかりませんとの
エラーメッセージが出るようになりました。
結局、開いているブックの絶対パスを取得するという方法にして思っている結果
は得られることができましたが、どうにも不思議なので質問しました。
コードは以下のように記述していました。
Open "..\ディレクトリ\ファイル.dat" For Input As #1
上記ではだめなのでしょうか?
VBでは問題なかったような気がします。
No.1ベストアンサー
- 回答日時:
相対指定はカレントフォルダから始まります。
デフォルトでは「C:\My Documents」になってるはずですが。
「ツール」→「オプション」
「全般」タブ
カレントフォルダ名
で、指定します。
ありがとうございます。
カレントフォルダが指定されていたのですか。
今確認しました。
でも普通はデフォルトのカレントフォルダなんて指定されてませんよね?
エクセルだけなのでしょうか?
ということは今作っているブックだけをファイルサーバ上に置いて共有しよう
と思っていたのですが、エクセル自体でカレントフォルダが指定されているの
では普通に相対パスを切ってもだめですね。
結局ActiveWorkbook.pathでブック自体の絶対パスを取得する方法にしています。
No.3
- 回答日時:
こんにちは。
そのマクロを含むブックのパスなら、単純に下記で取れますが、、、(但し、一度でも保存済みならばです。)
そんなに単純じゃないかな?
Sub Test1()
MsgBox ThisWorkbook.Path
MsgBox ThisWorkbook.FullName
MsgBox Dir(ThisWorkbook.FullName)
End Sub
No.2
- 回答日時:
ファイルを掴まえる点に関して、下記を検討して役立てられませんか。
小生最近調べたもので。感じるものがなければ、忘れてください。
(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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- HTML・CSS Dreamweaver のテンプレートでの相対パスの設定について 2 2023/06/13 17:28
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Visual Basic(VBA) Excel-VBAでのファイルの開き方 4 2023/02/14 11:01
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- Visual Basic(VBA) VBSで作成した相対パスのショートカットが他者と共有できません。 1 2022/09/05 11:20
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
ExcelVBAでカレントディレクト...
-
windows.hがincludeされない
-
絶対パスの絶対て英語で何でし...
-
C言語を用いたファイルの一括削...
-
ネットワーク上のコンピュータ...
-
fopenで別ディレクトリにファイ...
-
GetPrivateProfileStringでini...
-
perlで添付ファイルの送信でper...
-
webアプリケーションでの画像フ...
-
VBでのファイル検索について。
-
C#でインターネット一時ファイ...
-
EXCELでダイアログボックスを開...
-
絶対パスとフルパスの違いがイ...
-
FTPでputすると空ファイルが出...
-
フォルダ名をだすには
-
「UNCパスはサポートされません...
-
pythonでの日本語操作
-
AfxLoadLibrary関数で、DLLのハ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フルパスから最後のディレクト...
-
どんなプログラムを書いても指...
-
FTPでputすると空ファイルが出...
-
windows.hがincludeされない
-
ExcelVBAでカレントディレクト...
-
マイクラでPythonのプログラミ...
-
webアプリケーションでの画像フ...
-
GetPrivateProfileStringでini...
-
fopenで別ディレクトリにファイ...
-
ファイルやディレクトリの存在...
-
「UNCパスはサポートされません...
-
C言語を用いたファイルの一括削...
-
ネットワーク上のコンピュータ...
-
絶対パスの絶対て英語で何でし...
-
エクセルVBAで相対パスでファイ...
-
ファイルダイアログのカレント...
-
ExcelVBA サーバーの(共有フォ...
-
フォルダ名をだすには
-
ThisWorkbook.Pathについて
-
AfxLoadLibrary関数で、DLLのハ...
おすすめ情報