プロが教える店舗&オフィスのセキュリティ対策術

エクセルマクロについて

マクロ処理において、毎回読み込むファイルが違うので、
マクロ利用時にはマクロ内の絶対パスを手動にて変更しています。
しかし、これはなにげに大変な作業です。
そこで、別のなんらかの手法を取りたいと考えています。
たとえば、"開く"ボタンにて対象ファイルをマウスにて選択することによって、
絶対パスが変更する。等

どのような手法でもかまいません。
ご教授のほどよろしくお願いします。

A 回答 (3件)

ファイルを開く時


Application.Dialogs(xlDialogOpen).Show
を使うと、ファイルの選択画面に成ります。
その他
Application.FindFileとか色々試してみて下さい。
    • good
    • 0

こんにちは。



私には、コードが何を求めているのか、ご説明では正確には分かりません。

>"開く"ボタンにて対象ファイルをマウスにて選択することによって、絶対パスが変更する。等

 fn = Application.FileDialog(msoFileDialogOpen).Show
 ' or
 'fn = Application.Dialogs(xlDialogOpen).Show

をお使いになっているのかな?

>どのような手法でもかまいません。

'----------------------------------

Sub getFolderName1()
 Dim myPath As String
 With Application.FileDialog(msoFileDialogFolderPicker)
  If .Show = False Then Exit Sub
  myPath = .InitialFileName
  MsgBox myPath
 End With
End Sub
'----------------------------------
Sub getFolderName2()
Dim fn As String
 ChDir ThisWorkbook.Path '最初のフォルダに移動
 fn = Application.GetOpenFilename("すべてのファイル(*.*),*.*")
 If fn = "False" Then Exit Sub
 myPath = Mid$(fn, 1, InStrRev(fn, "\"))
 MsgBox myPath
End Sub
'------------------------------------
他には、こんな方法もあります。

Sub Sample_ShowFolder()
 Dim objSh As Object
 Set objSh = CreateObject("Shell.Application"). _
  BrowseForFolder(0, "フォルダを選んでください", 0, "c:\")
  If Not objSh Is Nothing Then
   MsgBox objSh.Items.Item.Path
  End If
 Set objSh = Nothing
End Sub

フォルダを取得する方法は、他にも、Win32 APIがあります。
    • good
    • 0

こんにちは。



回答ではないのですが、
下記URLのサイトが参考になると思います。

参考URL:http://www.asahi-net.or.jp/~ef2o-inue/top01.html
    • good
    • 0

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