• 締切済み

パスを使ってファイルを開く

ファイルダイアログでパス取得を行った後に、 そのパスを使ってファイルをコピーということは出来るでしょうか? 行ってほしい動作としましては、 ・ファイルダイアログでパス取得 ・そのパスを使ってファイルをコピー としたいのです。 ちなみに、コピーするためのコードは Call Shell(Environ$("COMSPEC") & " /C COPY ""C:\AAA.xls"" Z:AAA.xls") といった、絶対パスによるコピーになっています。 何故、パス取得が必要かといいますと元ファイルの場所が変わることがあるからです。 どうしても分からないので方法あるようでしたら教えてください。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 >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 (送り先)側は、同じものなら、パス名だけでよいはずです。 それと、「絶対パスによるコピーになっています。」って、ロングネームで、スンナリ通りますか?私は、全部は書きませんから、ファイル名、パス名代入してみて、ダメだったら、また、レスをつけてください。

syuen206
質問者

お礼

お返事ありがとうございます。 書かれている方法を行おうかとしたところ別の作業をすることになり、 この方法を試すことができなくなってしまいました。 尚、この問題は他の方が別の方法により解決いたしましたので回答を締め切りたいと思います。 長い間返事が遅れてしまい申し訳ありませんでした。 今後同じようなことが起こった場合にWendy02さんの方法を試してみたいと思います。

関連するQ&A

  • .xlsファイルが存在するパスを表示させたい

    エクセルマクロ初心者です。 .xlsファイルをサブフォルダも含め検索し、A列にファイル名、B列にファイルが存在するパスを表示させるにはどうしたらいいでしょうか?検索するベースのディレクトリは決まっている”C:\temp”のでtemp以下、.xlsがどこに存在するのかを検索するマクロを組もうとしています。 いろんな書き込みを探し、サブフォルダを含め、ファイル名を取得するものは発見できたので組み込んでみましたが、、パスの表示方法がわかりません。 cnt = 0 Call Sample3("C:\temp") Callでサブルーチンsample3に渡し、ファイル名を取得しています。  Dim cnt As Long Sub Sample3(Path As String) Dim buf As String, f As Object buf = Dir(Path & "\*.xls") Do While buf <> "" cnt = cnt + 1 Cells(cnt, 1) = buf buf = Dir() Loop With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(Path).SubFolders Call Sample3(f.Path) Next f End With End Sub あとは、どのように書けばいいのでしょうか? 宜しくお願い致します。

  • Excel マクロでファイル名を変数に・・・

    初心者です。検索してもわからなかったので質問です。 下記のようなマクロの処理で「AAA」というファイル名のExcelに「2.xls」からデータをコピーし貼り付けています。    ・    ・ Windows("AAA.xls").Activate Rows("4:4").Select Selection.Insert Shift:=xlDown Windows("2.xls").Activate Range("C6").Select Selection.Copy Windows("AAA.xls").Activate Range("A4").Select ActiveSheet.Paste Windows("2.xls").Activate Range("C7").Select Application.CutCopyMode = False Selection.Copy    ・    ・ 今回は「2.xls」ではなく「3.xls」、「4.xls」、・・・といったように違うファイル名で同じ処理を行ないたいので「2」と指定するのではなく「(ファイル名).xls」といった形にしたいのですが、それは可能なのでしょうか。 ご意見宜しくお願いいたします。

  • ファイルサーバー上のファイルのフルパスを取得したい

    ネットワークドライブZ:に、 \\my_serv\files\docment\project1\1st_meeting を割り当てているとして、 Z:\hoge.xlsのフルパスを \\my_serv\files\docment\project1\1st_meeting\hoge.xlsと取得する 方法orソフトを教えてください。 ところが、社員によってZ:が「\\my_serv」だったり、「\\my_serv\files\docment」 だったりと不統一なので、メールでパスを示す際など file:///\\my_serv\files\docment\project1\1st_meeting\hoge.xls などと示さなければなりません。 なので、いつも マイネットワーク→ネットワーク全体→Microsoft Windows Network→ ドメイン名→my_serv...(以下略)と、たどって、 「\\my_serv\files\docment\project1\1st_meeting」という文字列を エキスプローラのアドレスバーから拾っています。 FileVisorや、ClipNameなどフルパスは取得できるソフトはいくつかありますが、 Z:\hoge.xls と取得されてしまいます。

  • 実行ファイル内に保持

    Visual Studio Express 2013 Shell("cmd /c copy D:\aaa.txt " & textbox1.text & ".txt",AppWinStyle.Hide,True) 例ですが、 テキストボックスに任意の文字列を入力して、 aaa.txtをコピーするとします。 aaa.txtを固定の場所に置くのではなく、実行ファイル内に保持していて、 どのPCでも実行できるように出来ないでしょうか?

  • EXCEL VBAでファイル名を変更してコピー

    決められたフォルダーの中にある決められた名称のファイル(仮にc\document\aaa.xls)を、決められたフォルダーにコピー元のファイル名+毎回指定した数字を付加したファイル名(仮に\document\aaa9999.xls)としてコピーする方法をエクセルのVBAで実現する方法を教えてください。指定する数字の9999はプログラム起動後にダイアログBOXで指定できればベストですが、難しければ指定のセルに毎回入力でもかまいません。

  • ファイルのフルパス splite?InstrRev?

    お世話になります。 エクセル2003のVBAについての質問なのですが、 ファイルパスを分割して、変数に格納したいと考えております。 具体的には、現在のワークブックのパスである C:\○○○\○○○\ABC\test1\test2.xls というフルパスを「C:\○○○\○○○\ABC\」と「\test1\test2.xls」 に分割して、「\test1\test2.xls」だけを変数に格納して他の箇所に 利用したいのです。 下記を試してみたのですが、これでは、「test2.xls」のみしか取得することができません…。 Sub Sample1() Dim PathName As String, FileName As String, pos As Long pos = InStrRev(ThisWorkbook.Path, "\") FileName = Mid(ThisWorkbook.Path, pos + 1) End Sub 一つ上のフォルダ名を含む「\test1\test2.xls」を取得するにはどうすればいいでしょうか。

  • いつものpathにあるとは限らない場合のexeを呼び出す場合

    あるexeファイルをを呼び出したいが、特定のPath、例えば call "C:\Program Files\application\Client\aaa.exe" としたいが、いつもこのpathにあるとは限らない場合、call以下をなんと書けばよろしいですかね。 wshはハードルが高いのですが、WSHのほうが可能なら皆様のご支援をお願いしたく、書き込みました。 よろしくお願いいたします。

  • そのファイルのパスって取得できますか?

    ExcelでVBAを書いているんですが、たとえば、マイドキュメントとかのパスって、調べることが出来ますよね? そういった感じで、自身がどこにいるかも取得する方法ってあるのでしょうか? もちろん、ファイルを指定するようなダイアログを出せば出来るんですが、今回のは、そういったことじゃなくて、ユーザ側には何の操作もさせないことを考えています。 最終的にやりたいことは、同じディレクトリ内のファイルとの同期なんですが、やはり、ファイルの位置は、フルパスで指定しないとダメなんでしょうか。 どなたか、よろしくお願い致します。

  • SHELLコマンドがうまく動かないです VB6.0

    Shell("C:\aaa.bat")と書くと動くのに BBB(H$)というフォルダにBATファイルを移動して Shell("C:\BBB(H$)\aaa.bat")と書くと 動きません。 ()がいけないのでしょうか?(>_<) 何が疑問かと言うと、前まで動いていたような 気がするからです。 どなたかおしえてください。

  • フォルダ選択と取得したパスの表示

    どうしてもわからないのでご教授お願いします。 コマンドボタンを使用して、フォルダの選択のダイアログを表示し、選択したフォルダのパスを取得することはできたのですが、そこから取得したパスを任意のセルに表示させたいです。 どうすれば表示させることができるでしょうか。 Private Sub commandbutton1_Click() Dim Shell, myPath Set Shell = CreateObject("Shell.Application") Set myPath = Shell.BrowseForFolder(&O0, "フォルダを選んでください", &H1 + &H10, "C:\") If Not myPath Is Nothing Then MsgBox myPath.Items.Item.Path Set Shell = Nothing Set myPath = Nothing End Sub ご教授宜しくお願いします。

専門家に質問してみよう