• ベストアンサー

保存先のパスを変数に格納して使用する方法

マクロ実行の際に、保存先をプログラムした場所とは別の場所にしたい場合、いちいち変更箇所(1つのプログラムで5か所くらいあります)を修正するのが面倒です。そこで、変更するアドレス(パス?)を変数に格納してそれを使い回したいのですがどうすればいいでしょうか? 例えば、 "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" というアドレスを m に格納して、 m = C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ として、 ChDir ""& m &"" と使えたら理想なのですが、できますでしょうか? また、変数を使えたとして、上記の書き方は正しいのでしょうか? 間違っていた場合、ChDirに変数を使用するときの書き方もご教授いただけたら助かります。 よろしくお願いします。

  • sdfa
  • お礼率50% (151/298)

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.4

> m = "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" > としたら > Chdir m "& \ついか &" > でいいのでしょうか? Chdir m & "\ついか" です。 mの末尾が何だろう?という場合に備え Chdir m & ".\ついか" として置くのが無難です。 #回答本文中の&が全角に変換されてますが、VBでの記述は半角です。 #コピー&ペーストする際にはご注意ください。

sdfa
質問者

お礼

くわしい解説ありがとうございました。 おかげでなんとかできました。 何度も回答いただき本当にありがとうございました。 また何かあれば質問させていただきますので その時はまたよろしくお願いします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

Chdirの意味を誤解してませんか? http://officetanaka.net/excel/vba/statement/ChDir.htm のようにChdirはいわば「動作」で在って、状態ではない。 だから ChDir ""& m &"" は大丈夫なのかな。 状態はCurDirではないですか。 ーーー mを文字列とデータ定義するなら、m=の段階で右辺は" "で囲うのでは。m = C:\Documents ・・はおかしいのでは。 それ(""で囲って代入したあと)を使うときは  ChDir m で良いように思うが。 その後、CurDirを文字列として扱えて、ファイル名と結合して(&で結合して)フルパスとして使うのでは。 http://officetanaka.net/excel/vba/function/CurDir.htm 参考 Path=CurDir & FileName

sdfa
質問者

お礼

ご指摘の通りChdirの意味を理解していませんでした。 ただ今回はみなさんのおかげでなんとか上手くいきました。 アドバイスありがとうございました。

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.2

「ChDir ""& m &""」これは何のこと? m="Path" ダブルクォーテーションが必要。 ドライブをまたげないから、ChDriveが必要だったか。同じドライブならいいが。 だから、下記 m = "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" ChDrive "C:" ChDir m でしょう。

sdfa
質問者

補足

回答ありがとうございます。 同じ質問で恐縮ですが、 "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ\ついか" というアドレスのがあった場合、 m = "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" としたら Chdir m "& \ついか &" でいいのでしょうか? よろしくお願いします。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

> m = C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ 文字列はダブルクォートで囲まないとエラーになるでしょうね。 m = "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" > ChDir ""& m &"" 文字列に " を含ませたいなら二重に書く必要がありますので ChDir """" & m & """" または ChDir Chr(34) & m & Chr(34) ですが、すでに文字列として定義されてますから ChDir m で可能でしょう。

sdfa
質問者

補足

回答ありがとうございます。 あともうひとつ疑問なのですが、 "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ\ついか" というアドレスの場合、 m = "C:\Documents and Settings\test\テスト\てすと\例\マクロ\まくろ" としたら Chdir m "& \ついか &" でいいのでしょうか? よろしくお願いします。

関連するQ&A

  • [マクロ]配列を区切り文字で変数に格納する方法

    タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。

  • エクセルのマクロで、他のブックを開くときについて

    マクロの記録を利用して、他のブックを開くことをしました。 マクロのモジュールを見たら、 ChDir "C:\Documents and Settings\*****\デスクトップ" Workbooks.Open Filename:="C:\Documents and Settings\*****\デスクトップ\○○.xls" となっていました。 1行目の「Chdir」というのはなんでしょう? また、2行目では開きたいブックをパスを使ってあらわしています。 今マクロを動かしているブックと同じフォルダ内にあるブックや そのフォルダから見て上位のフォルダとか、「c:」から始まる パスを使わないような書き方はあるのでしょうか? ご助言お願いします。

  • 絶対パス名からファイル名を取り出して、変数に格納するバッチ

    DOSコマンドバッチで定義した変数"fullpath"に絶対フルパス名が格納されているとします。 この変数からファイル名だけを抽出して別の変数"filenae"に格納したいのですが方法がわかりません。 1. set fullpath = "C:\test\test.c" 2. ----ここの部分をどのように処理すれば?------ 3. set filename = fullpathから抽出したファイル名 私がやってみた方法として、for文とdir /bを組み合わせてみたのですが for %a in ( dir /b c:\test\test.c ) do set filename =%a 本来dir /bを実行するとファイル名のみが表示されるのに、For文をかますと絶対フルパスでfilenameに値が格納されてしまいます。 dir /b c:\test\test.cの結果を直接filename変数に格納できれば解決するのですが、コマンド結果を変数に格納するにはFor文を使わないとだめなんですよね? なにかよい方法はないでしょうか?

  • ファイルの保存先を任意にしたい(マクロ)

     エクセルのマクロです。  マクロを実行した時に、保存先とファイル名は任意に入力して(その部分だけは、マクロ実行者が入力して)、その後もマクロを実行させたいのですがどうすれば良いのでしょうか? たとえば、 ActiveCell.FormulaR1C1 = "1" Range("B1").Select ChDir "C:\Documents and Settings\a\デスクトップ" ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A2").Select ActiveCell.FormulaR1C1 = "2" Range("B2").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book2.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A3").Select ActiveCell.FormulaR1C1 = "3" Range("B3").Select ActiveWorkbook.SaveAs Filename:= _ "C:\Documents and Settings\a\デスクトップ\ Book3.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False Range("A4").Select ActiveCell.FormulaR1C1 = "4" Range("B4").Select  上記の場合は、保存先もファイル名もこちらが指定していますが、その部分だけは、マクロの実行者に任意指定及び入力させたいのです。  マクロ初心者なので、よろしくお願いします。

  • 統合マクロでパスの取得方法

    お世話になります。 集計ファイルでエリア・商品で集計をとっています。 一つのファイルにまとめたいのでエリアをシート名による串刺し 商品を統合を使って集計していますが 毎回統合ボタンを押すのが大変で マクロを使い下記のコードを使っていますがファイルのパスで固定されているので 人に渡すとファイル名の変更、ユーザーの違いによりエラーになってしまいます。 現在開いているファイルの名前とパスをマクロに取り込み統合させる事は可能でしょうか Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2009/9/29 ユーザー名 : user ' ' Sheets("一般A").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]××一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]●●一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]■■一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]▲▲一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]++一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]※※一般A'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]%%一般A'!R6C2:R64C9"), _ Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:=False Sheets("一般B").Select Range("b6").Select Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]□□一般B'!R6C2:R64C9", _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]△△一般B'!R6C2:R64C9", _ ・ ・ ・ ・ End Sub DIMとかActiveWorkbook.Pathとか組み込みましたが うまく行かないです。 どうぞ助けてください。

  • Excelでファイルを開くをマクロで行いたい

    マクロ初心者です "ファイルを開く"をマクロの記録で記録させると ChDir "C:\Documents and Settings\○○\△△\※※" Workbooks.Open Filename:= _ "C:\Documents and Settings\○○\△△\※※¥LotLog20070131.csv" Windows("●●●.xls").Activate End Sub と記録されます この中で 開きたいファイルネ-ム(上記ならばLotLog20070131.csv)を "●●●.xls"の どこかのセルを参照に開きたいのですが どうすれば宜しいのでしょうか?

  • bashで出力を変数に格納したい。

    初歩的な質問で申し訳ありません。 bashで、あるプログラムの出力の一部を変数に格納したいのですが、どのようにすればよいのでしょうか? 例えば、 >>./test.exe this is a pen. という実行ファイルがあるときに。 isのみを、変数 a に格納する。と言ったものです。 >>echo ${a} is

  • ファイルの保存先のパス

    マクロでデスクトップに保存させたいのですが、 ActiveWorkbook.SaveAs Filename:= _ "D:\Documents and Settings\●●●\デスクトップ\Book1.xls", FileFormat:=xlNormal _ , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False の●●●のように、私のユーザー名が入ります。 このファイルは色々な人に使ってもらいたいので、 LOCALみたいな意味合いの言葉を入れたいのですが、 なんと入れたら良いでしょうか? ご存知の方いらっしゃいましたら宜しくお願いします。

  • エクセル VBA パスの記述方法を教えてください。

    Sub フォルダ作成() Dim UserName As String UserName = Environ("USERNAME") MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\売掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\買掛金元帳" MkDir "C:\Documents and Settings\" & UserName & "\My Documents\販売管理\0000年00月決算\管理表" End Sub 上記のようなマクロを記述してありますが、 C:ドライブ以外(D:ドライブやZ:ドライブ)で使用する場合が発生しましたので、 どのドライブでも使用出切る記述方法があれば御教示お願い致します。

  • C:\Documents and Settings\ユーザー名2\適当なフォルダ名へ保存したいのですが・・・。

    C:\Documents and Settings内の個人毎のフォルダにファイルを保存したいのですがどうしてもうまくいきません。 どなたかわかる方、お力を貸していただけないでしょうか? Dim ユーザー名1 As String Dim ユーザー名2 As String ユーザー名1 = Application.UserLibraryPath  ’ユーザー名格納 ユーザー名2 = Mid(ユーザー名1, 27, 8)    ’ユーザー名切出 ChDir "C:\Documents and Settings\ユーザー名2\適当なフォルダ名" ActiveWorkbook.SaveAs Filename:="C:\Documents and Settings\ユーザー名2\適当なフォルダ名r\適当なファイル名.xls", FileFormat:= _ xlNormal (変数:ユーザー名2)にうまく代入されない状態です。 変数の宣言がまずいのでしょうか??? 初心者丸出しの書き方で恐縮ですが、どうかお願いいたします。