ファイルパスの指定方法について教えてください

このQ&Aのポイント
  • ExcelVBAでファイルパスの指定方法がわからず困っています。直接パスを指定する方法ではうまくいくのですが、変数を使って指定する方法ではうまくいきません。パスの記述に問題があるのでしょうか。お願いします。
  • ExcelVBAでshell copyを利用して、指定したパスのcsvファイルをマージして新しいファイルを作成したいです。直接パスを指定する方法では成功していますが、変数を使って指定する方法ではうまくいきません。パスの記述に問題があるのか、別の原因があるのか教えてください。お願いします。
  • ExcelVBAでファイルパスの指定方法が分からないので、教えてください。csvファイルをマージして新しいファイルを作成したいです。直接パスを指定する方法ではうまくいきますが、変数を使って指定する方法がうまくいきません。パスの記述に間違いがあるのでしょうか。お願いします。
回答を見る
  • ベストアンサー

ファイルパスの指定の仕方がわからない

ファイルパスの指定の仕方がわからないので、教えてください。 ExcelVBAでshell copyを利用しようとしています。 「D:\」のなかのcsvをすべてマージして、[D:\test\マージ.csv] を作成したいのですが、(1)のように直接パスを指定するとうまくいきますが (2)のパターンではマージ.csvが生成されません。 (1)直接指定  →○ Shell ("cmd.exe /c copy D:\*.csv D:\test\マージ.csv")    (2)変数を使って指定 →× a1="D:\*.csv" a2="D:\test\マージ.csv" Shell ("cmd.exe /c copy a1 a2") パスの記述に問題があるのでしょうか。 なにとぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

a1 = "D:\*.csv" a2 = "D:\test\マージ.csv" Shell ("cmd.exe /c copy " & a1 & " " & a2) としてみて下さい

cb1986
質問者

お礼

早々の回答ありがとうございました! 見事にできました。 ありがとうございました。

関連するQ&A

  • ファイルパスを複数書いて、そのファイルパス全てからファイルを順に取り込

    ファイルパスを複数書いて、そのファイルパス全てからファイルを順に取り込みたい。 A1,B1.C1・・・と、セルにファイルの絶対パスを書いて、A1から順に書いてあるファイルパスだけそのパスからファイルを取り込むマクロを作りたいです。 ファイルを指定してファイルを取り込むマクロを作ったのですが、毎回ファイルを指定するのが面倒です。 なので、シートにあらかじめファイルパスを書いておいて、そのファイルパスからファイルを取り込むようにしたいです。 取り込むファイルは複数で、その時によって違います。(といっても、多くても5つくらいですが・・・) どなたか作り方を教えていただけませんでしょうか。 質問内容が分かりづらかったらすみません。 何かあれば補足いたしますのでよろしくお願いします。

  • アクセスVBA PDFの指定ページを開きたい

    PDFを管理するようなテーブルを作っています。 現在,レコード1件ごとにPDFのリンク(HDD上のパス)を対応させて登録し,フォーム上でクリックすると開くようになっています。 ここに,PDFの指定のページが開く機能を追加したいです。指定のページの値は,レコード内に登録されています。 暫定的に, Shell "CMD /C START Acrobat.exe /A page=3 C:\~~~~.pdf" というコードで試したところ,狙ったPDFの3ページが開きました。 そこで,page=の後ろの値をレコード内から取得するために変数を使いたいと思い, さしあたり Dim x As Integer x = 3 Shell "CMD /C START Acrobat.exe /A page=x C:\~~~~.pdf" としてみたところ, 3ページではなく,1ページが開いてしまいました。 ついでに, Dim x As Integer Dim y As String x = 3 y = "page=" & x Shell "CMD /C START Acrobat.exe /A y C:\~~~~.pdf" というのも一応試しましたが,やはりだめでした。 たぶん,変数の使い方がまずいのかと思うのですが, どうしたらよいのでしょうか。 教えていただけると助かります。

  • cscriptで文字変数 に ” を入力するには

    お世話になります。 早速ですが、質問があります。 c:\test\test.exe -path "D:\data" -file "aaa.txt" -flag a というコマンドをcscript のプログラムから起動したいのですが、コマンド文字列を文字列変数に代入する方法 がありましたら、教えてください。 Cscript test.vbs %1 ======================================= Dim WshShell Dim oExec Dim Cmd Dim File File = WScript.Arguments(0) Cmd = "c:\test\test.exe -path "D:\data" -file "a.out" -flag " & File                     ↑↑↑↑                  これができません? Set WshShell = CreateObject("WScript.Shell") set oExec = WshShell.Exec(Cmd) Do While oExec.Status = 0 Wscript.Sleep 100 Loop "も文字列に入力するには、どのようにすればいいでしょうか? ご意見、アドバイスよろしくお願いいたします。

  • VC++.net iniファイルパス指定の仕方

    VC++2005.netマネージでiniファイルを使いたいと思っています。 iniファイルから変数を読み込む関数GetPrivateProfileInt,GetPrivateProfileStringの引数にはiniファイルの絶対パス(c:\~set.ini)を指定しなければならないようです。 実行ファイルと同じ場所にiniファイルを置きたいのですが、これはどうやって指定するのでしょうか。 私が思いついたコードです。 String ^exepath = gcnew String(System::Windows::Forms::Application::ExecutablePath);//実行ファイルのパスを取得。 char charpath[500]={0}; sprintf(charpath,"%s",exepath->ToString);//string型からchar型へ変換する。 int len = strlen(charpath); charpath[len - ??] = \0;//実行ファイル名を消す char ininame[] = "setting.ini"; strcat(charpath,ininame); これは実行ファイルの絶対パスと実行ファイル名を取得し加工します。 c:\~~\prog\test.exe(string型の文字列) ↓ c:\~~\prog\test.exe(char型の文字列) ↓ c:\~~\prog\ (後ろつまり実行ファイル名の部分を削る) ↓ c:\~~\prog\setting.ini (iniファイル名を後ろに追加する。) ただ、これには問題がありこの変数を引数にしたのでは >'GetPrivateProfileIntW' : 1番目の引数を'const char[10]'から'LPCWSTRに変換できません。 と出ます。 どうすればiniファイルのパスを指定できるのでしょうか。

  • WSHプログラミングで、Shell実行プロセスが終了しない内に、次の処理が実行されちゃいます・・・

    WSH(WindowsScriptingHost)でプログラミングを行っております。 以下のように、「A.exe」実行後、「B.exe」を実行するようにスクリプトを記述しています。 ところが、実際に実行してみると、「A.exe」が終了しない内に、「B.exe」が実行されてしまっている様なのです。 しかし、プログラム処理上、「A.exe」が実行終了してからでないと、「B.exe」を実行するのはまずいのです。 WSHで、「A.exe」が実行終了するまで、「B.exe」を実行させないようなスクリプトの記述方法を教えて下さい。 Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd.exe /c D:\A.exe" Shell.Run "cmd.exe /c D:\B.exe"

  • フォルダ参照ではなくファイルを指定したい。

    フォルダの参照ダイアログボックスを使用して ファイルを選択できるようにしています。 プログラムでcsv形式で保存し、そのcsv形式ファイルを指定して開くという動作を目的としています。 そのファイル選択を固定でなく可変で選択したいと思っています。 Dim ShellApp As Object Dim oFolder As Object Set ShellApp = CreateObject("Shell.Application") Set oFolder = ShellApp.BrowseForFolder(0, "ファイル選択", &H4000,"C:\test") msgbox(oFolder) このような感じで、フォルダのみではなくファイルを指定することに成功しました。 しかし、このフォルダ参照ダイアログが表示されたときに、何も選択せずに キャンセルボタンをクリックするとエラーが出て止まってしまいます。 目的とする動作はできてはいるのですが、キャンセルするとエラーになるので、この原因がわからず困っています。 キャンセルボタンに関することを記述する必要があるのでしょうか? また、この他にファイルを指定するのに適した方法がありましたら教えてください。 参照するフォルダを指定しているのでパスの取得は必要ありません。 ファイルが選択できたらOKです。 フォルダのパス取得のプログラムはよくサンプルを見かけるのですが、 ファイル選択のサンプルはあまり見かけないです(-_-;) また、この方法ではC:\と絶対パスで指定していますが、exeファイルが存在する場所からの相対パスでの指定はできないのでしょうか? csvで保存する時は"./test/test.csv"などと記述して書き込みできていたのですが、 このようなパスを書くとエラーとなりファイルを見つけられないといわれてしまいます。

  • VBSCRIPTでcmd命令(dir)を実行させて

    パスはcsvファイルで読みこんで、vbs上で Set Shell = CreateObject("WScript.Shell") Shell.Run "cmd /C ""dir \¥xxx\xxxxx\xxxxx" を実行させてアクセスできなかったパスがぞんざいするならエラーで返して続いて実行してほしいです。 それで最後にログにエラー情報を書く処理をおこないたいです。問題はcmdだとecho %errorlevel%これを使えば すぐにこげたことを1か0で返してくれますが vbs上でも可能ですか?

  • Dosバッチでファイルパスからフォルダパス取得

    Dosバッチで引数指定されるファイルパスからフォルダパス部分を抜き出したいと思っています。 例)---------------------------------------------- 「C:¥hoge1¥hoge2¥a.txt」が引数で指定されてきた場合、 「C:¥hoge1¥hoge2¥」の部分を変数に格納したい ----------------------------------------------- ちなみに、指定されてくるパスは不規則です。 どなたか良い方法をご存知でしたらご教授宜しくお願い致します。

  • VistaでProgram FilesにCOPY

    WindowsXPまでは可能だった、コマンドプロンプト(DOSコマンド)で COPYコマンドを使い、EXEファイルをコピーしたいのですが、 WindowsXPまでは、 > test.exe C:\Progra~\testFolder\test.exe" でコピーできたのですが、 Vistaでは、同じコマンドだと 「指定されたパスが見つかりません 」 と出ます。 VisualBasicで作っても 「パスが見つかりません」と 表示されます。 Vistaになってから指定方法が変更されたのでしょうか?

  • DOSコマンドのFOR文で空白を含むファイルパスの指定方法

    DOSコマンドのFOR文で空白を含むファイルパスの指定方法 DOSコマンドのFOR文で、FORの繰り返し条件に 空白を含むファイルパスを指定する方法を教えてください。 やりたいことのイメージはこんな感じです。 for /f %%a in (C:\Documents and Settings\user\デスクトップ\list.txt) do ( echo %%a ) バッチファイルとlist.txtを同じディレクトリに配置し、かつ FOR文の前にCDを含めない事を条件にすれば 下記でもうまくいきます。 for /f %%a in (list.txt) do ( echo %%a ) 他のコマンドとの関係からこの前の処理で一度ディレクトリの 変更を行なう処理を含むため、FOR文で指定するファイルは 絶対パス指定をしたいと思っています。 簡単なことのような気もするのですが、 もしかしたら出来ないのかもしれないとも思っています。 FORの繰り返し条件に空白を含むファイルパスを 指定することはできるのでしょうか? 出来るのならばその方法を教えてください。 よろしくお願いします。

専門家に質問してみよう