- 締切済み
パスを使ってファイルを開く
ファイルダイアログでパス取得を行った後に、 そのパスを使ってファイルをコピーということは出来るでしょうか? 行ってほしい動作としましては、 ・ファイルダイアログでパス取得 ・そのパスを使ってファイルをコピー としたいのです。 ちなみに、コピーするためのコードは Call Shell(Environ$("COMSPEC") & " /C COPY ""C:\AAA.xls"" Z:AAA.xls") といった、絶対パスによるコピーになっています。 何故、パス取得が必要かといいますと元ファイルの場所が変わることがあるからです。 どうしても分からないので方法あるようでしたら教えてください。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >Environ$("COMSPEC") もしかして、OSのバージョンが変わるとか? >ファイルダイアログでパス取得を行った後に、 という感じでしたら、もう、オートメーション・オブジェクトで、作ったほうがよいですね。好き嫌いがあるでしょうから、なんとも言えないけれども。 Const ssfDRIVES = &H17 'マイコンピュータ Dim FileName As String 'ファイル名 Dim Sel_Folder As Object 'フォルダ・オブジェクト Dim Sel_Path As String 'パス名 'オープンファイルダイアログ FileName = Application.GetOpenFilename _ ("Excel(*.xls),*.xls") If FileName = "False" Then Exit Sub 'オートメーション・Shell のフォルダ取得 Set Sel_Folder = CreateObject("Shell.Application"). _ BrowseForFolder(0, "フォルダを選択してください", ssfDRIVES, &H0) If Not Sel_Folder Is Nothing Then Sel_Path = Sel_Folder.Items.Item.Path Else Exit Sub End If '-------------------------------- こんな風にすれば取れるはずですから、当てはめればよいのですが、Copy コマンドは、Destination (送り先)側は、同じものなら、パス名だけでよいはずです。 それと、「絶対パスによるコピーになっています。」って、ロングネームで、スンナリ通りますか?私は、全部は書きませんから、ファイル名、パス名代入してみて、ダメだったら、また、レスをつけてください。
お礼
お返事ありがとうございます。 書かれている方法を行おうかとしたところ別の作業をすることになり、 この方法を試すことができなくなってしまいました。 尚、この問題は他の方が別の方法により解決いたしましたので回答を締め切りたいと思います。 長い間返事が遅れてしまい申し訳ありませんでした。 今後同じようなことが起こった場合にWendy02さんの方法を試してみたいと思います。