Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4199 / 13644 ツリー ←次へ | 前へ→

【57919】同一ディレトリ、一つ前のディレトリのファイルを開く yo460 08/9/21(日) 8:25 質問[未読]
【57921】Re:同一ディレトリ、一つ前のディレトリの... かみちゃん 08/9/21(日) 9:24 発言[未読]
【57922】Re:同一ディレトリ、一つ前のディレトリの... りん 08/9/21(日) 9:31 発言[未読]
【57925】Re:同一ディレトリ、一つ前のディレトリの... yo460 08/9/21(日) 13:49 お礼[未読]

【57919】同一ディレトリ、一つ前のディレトリのフ...
質問  yo460  - 08/9/21(日) 8:25 -

引用なし
パスワード
   たまにしかExcel VBAを利用しないものですが初歩的なことかもしれませんが首記の件ご教授お願いします。

Unixやdosでは、dir .とかdir ..のようなドットで表現するコマンドがあったとおもいますがExcelのコードではどのように表現するのでしょうか?
具体的な例をお示し願えればありがたいです。

【57921】Re:同一ディレトリ、一つ前のディレトリ...
発言  かみちゃん  - 08/9/21(日) 9:24 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> Excelのコードではどのように表現するのでしょうか?

FileSystemObject(FSO)を使うと以下のような感じでできると思います。

Sub Sample()
  Dim FSO
  Set FSO = CreateObject("Scripting.FileSystemObject")
  'マクロが記述されたブックが保存されているディレクトリの親ディレクトリ名を文字列で返します
  MsgBox FSO.GetParentFolderName(ThisWorkbook.Path & "\")
  Set FSO = Nothing
End Sub

なお、FSOについては、以下のあたりが参考になると思います。
http://www.officetanaka.net/excel/vba/filesystemobject/index.htm

【57922】Re:同一ディレトリ、一つ前のディレトリ...
発言  りん E-MAIL  - 08/9/21(日) 9:31 -

引用なし
パスワード
   yo460 さん、おはようございます。

>Unixやdosでは、dir .とかdir ..のようなドットで表現するコマンドがあったとおもいますがExcelのコードではどのように表現するのでしょうか?
>具体的な例をお示し願えればありがたいです。

".."はそのまま使えます。
Sub test()
  Dim s(1 To 2) As String
  s(1) = CurDir 'カレント
  MsgBox s(1), vbInformation, "START"
  '
  Do
   ChDir ".." 'CD ..と 同じ
   s(2) = CurDir 'カレント
   If s(1) = s(2) Then Exit Do
   MsgBox s(1) & " → " & s(2), vbInformation
   s(1) = s(2)
  Loop
  '
  MsgBox s(1), vbInformation, "END"
  Erase s
End Sub

実行結果はこんな感じ。
C:\Documents and Settings\●●●\My Documents → C:\Documents and Settings\●●●
C:\Documents and Settings\●●● → C:\Documents and Settings
C:\Documents and Settings → C:\

なので、マクロを書いたブックの入ったフォルダの、ひとつ上のフォルダに入ったTEST.XLSを開く場合は、
Sub test()
  Dim Ifile As String
  '
  Ifile = ThisWorkbook.Path 'ブックのパス(一度も保存していないブックだとエラー)
  If Right(Ifile, 1) <> "\" Then Ifile = Ifile & "\" '念のため確認
  Ifile = Ifile & "..\TEST.XLS" 'ひとつ上のフォルダのファイル
  '
  '開く前に有無チェック
  If Dir(Ifile) <> "" Then
   Application.Workbooks.Open Ifile
  Else
   MsgBox Ifile, vbExclamation, "ファイル名確認"
  End If
End Sub

【57925】Re:同一ディレトリ、一つ前のディレトリ...
お礼  yo460  - 08/9/21(日) 13:49 -

引用なし
パスワード
   かみちゃんさん
りんさん

さっそくお答えいただき有難うございました。
私は記録マクロを手を加えて自己流でやっているものですから未知の表現が多々ありました。
でも非常に参考になりました。ゆっくり吟味してみて差し当たってつまづいているコードに、応用してみます。
助かりました、重ねてお礼申し上げます。

4199 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free