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

このQ&Aのポイント
  • 統合マクロを使用して、エリアごとのデータをまとめたい場合、ファイルのパスの問題があります。ファイル名が変更されたり、ユーザーによってパスが異なる場合にエラーが発生します。そこで、マクロに現在開いているファイルの名前とパスを取り込む方法を探しています。
  • マクロを使用してエリアごとにデータをまとめる際、ファイルのパスの問題があります。現在のマクロはファイルのパスが固定されており、ファイル名の変更や異なるユーザーによるエラーが発生します。現在開いているファイルの名前とパスをマクロに取り込む方法を教えてください。
  • 統合マクロを使用してエリアごとにデータをまとめる場合、ファイルのパスの問題があります。特定のファイル名やユーザーパスに依存しないように、現在開いているファイルの名前とパスをマクロに取り込む方法を教えてください。
回答を見る
  • ベストアンサー

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

お世話になります。 集計ファイルでエリア・商品で集計をとっています。 一つのファイルにまとめたいのでエリアをシート名による串刺し 商品を統合を使って集計していますが 毎回統合ボタンを押すのが大変で マクロを使い下記のコードを使っていますがファイルのパスで固定されているので 人に渡すとファイル名の変更、ユーザーの違いによりエラーになってしまいます。 現在開いているファイルの名前とパスをマクロに取り込み統合させる事は可能でしょうか 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とか組み込みましたが うまく行かないです。 どうぞ助けてください。

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

  • ベストアンサー
  • myRange
  • ベストアンサー率71% (339/472)
回答No.3

回答2、myRangeです。 ●2つとも開いてない場合も書いときますね。 集計ファイル(マクロあり)、8期資料.xlsとも同じフォルダーに入れておく Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9", _ これは、  Dim myPath  myPath = "'" & ThisWorkbook.Path & "\[8期資料.xls]"  Selection.Consolidate Sources:=Array( _       myPath & "〇〇一般A'!R6C2:R64C9", _ 以上です。

yrvgogo
質問者

お礼

myRange様 ありがとうございます。今後の参考になります。 現在ファイルは1ファイルにまとめています。 [8期資料.xls]の中のファイル名の取得をご教授いただけませんか 8期資料最終.xlsとか8期資料(1).xlsとかにすぐ変えられてしまうので テキスト開いて色々並べ替えていますが流し込むとXXXです。 もう少しなんですが・・・

その他の回答 (3)

  • myRange
  • ベストアンサー率71% (339/472)
回答No.4

>現在ファイルは1ファイルにまとめています。 この意味は、集計ブックはなく ブックは、8期資料.xls のひとつだけで、 マクロも8期資料.xlsにあるということですね。 で、あれば、パス名もブック名も不要です。 "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9" これは "〇〇一般A!R6C2:R64C9" となります。 【注意点】 >"〇〇一般A●'●!R6C2:R64C9" ●の間の、’(シングルクォーテション)は不要なので外すこと。 '------------------------------------------------------ 【回答2での反省点】 ●集計ブック と 8期資料.xls が同じブックの場合●、 "'[8期資料.xls]〇〇一般A'!R6C2:R64C9" と回答しましたが、これでも間違いではありませんが これは今回の条件と同じですから、今回の回答のように ブック名[8期資料.xls]を省略したものを提示すべきでした。 そうすれば再質問の必要はなかったですね。 申し訳ないことです。。(^^;;; 以上です。

yrvgogo
質問者

お礼

myRange様 ありがとうございます。 同一ファイル内だとパス・ファイル名は必要無かったのですね 大変助かりました。 こんな遅い時間にご回答頂き大変感謝いたします。 本当に助かりました。ありがとうございます。

  • myRange
  • ベストアンサー率71% (339/472)
回答No.2

  ●集計ブック と 8期資料.xls が同じブックの場合 "'C:\Documents and Settings\user\デスクトップ\[8期資料.xls]〇〇一般A'!R6C2:R64C9" これは "'[8期資料.xls]〇〇一般A'!R6C2:R64C9" これでOKです。 ------------------------------------------------------ ●集計ブック と 8期資料.xls が別ブックで  2つとも開かれている場合は、上記と同じ書き方でOKです。 ------------------------------------------------------ ●集計ブック と 8期資料.xls が別ブックで  8期資料.xls が開かれていない場合は  2つとも同じフォルダーにいれ、  Thisworkbook.Pathなどで文字列を作成してやります。  もしこの場合であれば、再質問願います。 以上です。  

yrvgogo
質問者

お礼

ありがとうございます。 パスは記載しなくても動きました。 後はファイル名が変更された時の "'[8期資料.xls]〇〇一般A'!R6C2:R64C9"の ファイル名を取得する方法も分かれば助かります。

  • rivoisu
  • ベストアンサー率36% (97/264)
回答No.1

.Consolidateなんていうメソッドは使ったことが無いので勉強になりました。 さて質問のなかで「開いているファイル」とあるので Workbooksコレクションを For Each Next でなめまわしてThiswkrobook以外のブック名を取得しこれに”〇〇一般A'!R6C2:R64C9”を追加して文字列配列を作る その配列をSorceにする。 ということで解決しそうです。

関連するQ&A

  • VBマクロで教えて下さい。

    下記VBマクロで上書きしない時はマクロを終了させたいのですがこ指導をお願いします。 Sub Macro2() ' Macro2 Macro ' マクロ記録日 : 2012/9/3  ユーザー名 : HA社    ChDir "C:\Documents and Settings\6464552\デスクトップ"    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\直送先部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False  Range("D42:E49").Select    Selection.ClearContents    Range("I32:J32").Select    Selection.Copy    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _        :=False, Transpose:=False    Application.CutCopyMode = False    ActiveWorkbook.SaveAs Filename:= _        "C:\Documents and Settings\6464552\デスクトップ\PPSC部品出庫伝票.xls", FileFormat:= _        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _        , CreateBackup:=False    Application.Quit End Sub

  • VBAで統合ができない・・・。

    エクセルのマクロの記録で作ったコードですが、実行すると「開けません」と出ます。 どこがいけないのでしょうか? Sub Macro2() Selection.Consolidate Sources:=Array( _ "'C:\Documents and Settings\abcd\My Documents\2011\新規[対象2010.12.xls]店別集計'!R3C4:R69C10" _ , _ "'C:\Documents and Settings\abcd\My Documents\2011\新規\[対象2011.01.xls]店別集計'!R3C4:R69C10" _ ), Function:=xlSum, TopRow:=False, LeftColumn:=False, CreateLinks:= _ False End Sub

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

     エクセルのマクロです。  マクロを実行した時に、保存先とファイル名は任意に入力して(その部分だけは、マクロ実行者が入力して)、その後もマクロを実行させたいのですがどうすれば良いのでしょうか? たとえば、 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  上記の場合は、保存先もファイル名もこちらが指定していますが、その部分だけは、マクロの実行者に任意指定及び入力させたいのです。  マクロ初心者なので、よろしくお願いします。

  • ■ エクセルマクロについてです。初級?

    エクセルのマクロでデスクトップにあるエクセルファイルを開くにはどうしたらいいのでしょうか? 現在は、エクセルファイルA.xls B.xlsという2つを開いていて、マクロを実行することができるのですが、これをA.xlsだけ開いている上体で、実行したいのです。 なので、デスクトップに置いてあるB.xlsファイルを開くコマンド?というか、関数が知りたいのですが、どうしたらいいのでしょうか? 現在はこのような感じになっております。 Sub Macro2() ' ' Macro2 Macro ' マクロ記録日 : 2008/9/10 ユーザー名 : ' ' ActiveCell.FormulaR1C1 = "12345" Range("G17").Select ActiveCell.FormulaR1C1 = "129876" Range("G18").Select Windows("B.xls").Activate Range("N16").Select ActiveCell.FormulaR1C1 = "8/4/2008" Range("N17").Select ActiveWorkbook.Save Range("O16").Select ActiveWorkbook.Save ActiveWindow.Close End Sub

  • ダイアログボックスから関数と変数の挿入

    ダイアログボックスから名前とID番号を入れると最下行にその名前とIDになった関数がセルの中に挿入されるようにするにはどうすればいいのでしょうか? B50='C:\Documents and Settings\Owner\デスクトップ\[(1022徳川家康).xls]Sheet1'!$A$2 B51='C:\Documents and Settings\Owner\デスクトップ\[(1022徳川家康).xls]Sheet1'!$A$3 B52='C:\Documents and Settings\Owner\デスクトップ\[(1022徳川家康).xls]Sheet1'!$A$4 たとえばB50、B51、B52のセルに上記な関数を総合という名前のブックに作成しています。 それは1022徳川家康ブックから読み込まれます。 総合というブックにダイアログボックスがあり織田信長という名前とID1023を入れると B60='C:\Documents and Settings\Owner\デスクトップ\[(1023織田信長).xls]Sheet1'!$A$2 B61='C:\Documents and Settings\Owner\デスクトップ\[(1023織田信長).xls]Sheet1'!$A$3 B62='C:\Documents and Settings\Owner\デスクトップ\[(1023織田信長).xls]Sheet1'!$A$4 と言うように入力したいと考えています。 ダイアログボックスを使用しないで作成する方が良いのかも良くわかりませんが、このようなものは作成できるでしょうか? よろしくお願いいたします。

  • フルパスの中にワイルドカードを使いたい

    ファイル削除のバッチファイルを作成しているのですが、フルパスの中でワイルドカードを使用したいのですが、可能でしょうか? 例として、 C:\Documents and Settings\user\デスクトップ\abc\test.txt C:\Documents and Settings\user\デスクトップ\edf\test.txt C:\Documents and Settings\user\デスクトップ\gh\test.txt を削除させたいです。 別の場所に同名のテキストファイルがあり、それは消したくないので、「*test.txt」とはしたくないです。 試しに下記のようにワイルドカードを使用してみたところNGでした。 del "C:\Documents and Settings\user\デスクトップ\*\test.txt" よろしくお願いします。

  • 相対パスでも絶対パスでもない参照の記述方法?

    C:\Documents and Settings\user_name\デスクトップ\index.html の<head>内に、 <link rel="stylesheet" href="/css/style.css" type="text/css"> と書かれているのですが、注視すると、 href="css/style.css"  でも href="./css/style.css"  でも href="../css/style.css"  でもなく、 href="/css/style.css"  なんです。これって、何処を指していますか? C:\Documents and Settings\user_name\デスクトップ\index.html に対し、 C:\Documents and Settings\user_name\デスクトップ\css\style.css と置いてもstyle.cssは効きませんでした。 index.htmlをhogeディレクトリに入れて C:\Documents and Settings\user_name\デスクトップ\hoge\index.html C:\Documents and Settings\user_name\デスクトップ\css\style.css としても、style.cssを読み込みませんでした。 何でそんなことを聞くかというと、http://www.nikkansports.com/ のソースがそうなっています。例えば28行目の↓とか。 <script type="text/javascript" src="/js/css-home.js"></script> style.cssを、何処におけばいいのでしょうか?

    • ベストアンサー
    • HTML
  • VBAマクロ、パスがありませんでとまります。

    Excel2003 VBAのコードを作成して、 実行しましたら ”実行時エラー'76' パスが見つかりません。" と表示されて Open pase ...... の行でとまってしまいます。 なにが原因とかんがえられますか? すいませんが、ご回答よろしくおねがいいたしますm(_ _)m Sub Macro1() Dim strarray() As Variant Dim counter As Integer Dim i As Long pase="C:\Documents and Settings\user\My Documents\" myname=Dir("C:\Documents and Settings\user\My Documents\",vbNormal) Do While myname <> "" If (GetAttr("C:\Documents and Settings\user\My Documents\" &_ myname) And vbNormal) = vbNormal Then ReDim Preserve strarry(counter+1) strarray(counter) = myname counter = counter + 1 End If myname = Dir Loop For i = 1 to counter Open pase & strarray(i) For Input As #1 Do Until EOF(1) ・ '処理 ・ ・ Loop Next i

  • 入力された名前やIDを変数に代入させて簡単に入力

    例えば セルB2に織田信長、セルB3に1022 セルB5に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$5 セルB6に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$6 セルB8に ='C:\Documents and Settings\Owner\デスクトップ\[1022織田信長.xls]Sheet1'!$C$8 というような式が入っているんですが、新たに番号1023の徳川家康さんを登録した時に 最下行でもいいんですが、セルC2に徳川家康、セルC3に1023が入力され セルC5に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$5 セルC6に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$6 セルC8に ='C:\Documents and Settings\Owner\デスクトップ\[1023徳川家康.xls]Sheet1'!$C$8 というような形で簡単に書き換えてくれるようなVBAの式はつくれますか?とにかく新しく新入生が入ったときに簡単に入力が出来るようにしたいです。 いい方法がありましたらお教え下さい。よろしくお願い致します。

  • エクセル2000でシートを外部出力するとエラー

    マクロのことはまだ初心者で、下記のようなマクロの記録を作成してみたのですが、実行すると2000ではユーザーが変わるとエラー表示が出てしまって、困っています ユーザー名は私の会社のイントラネットのユーザー番号です シートは関数も入っているので、コピー+値にしデスクトップに外部出力する方法にしています このカ所が黄色になっていました ChDir "C:\Documents and Settings\USR81043\デスクトップ" Sub エクセル2000でシートのコピーをデスクトップに外部出力() ' ' エクセル2000でシートのコピーをデスクトップに外部出力 Macro ' マクロ記録日 : 2002/6/17 ユーザー名 : USR81043 ' ' Sheets("報告書").Select Sheets("報告書").Copy Cells.Select Selection.Copy Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("A2").Select Application.CutCopyMode = False ChDir "C:\Documents and Settings\USR81043\デスクトップ" ActiveWorkbook.SaveAs FileName:= _ "C:\Documents and Settings\USR81043\デスクトップ\報告書1.xls", FileFormat:= _ xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _ , CreateBackup:=False End Sub

専門家に質問してみよう