VBAによるファイル起動方法とファイル数増加時の対応について

このQ&Aのポイント
  • VBAを使用してファイルを起動する方法と、ファイル数が増えた際の対応について質問があります。
  • 現在、ファイルAにマクロを作成し、ファイルAのパスを取得しています。次に、ファイルBを開き、ファイルAのパスでフィルタをかけ、それに対応するファイル名を取得しています。
  • しかし、今後ファイルCの数が増加することが予想されるため、ファイル数の増減に簡単に対応できるようにするために、ファイルBを作成してメンテナンスを行えば良いのではと考えています。しかし、この方法でファイルCを起動することは可能でしょうか?
回答を見る
  • ベストアンサー

VBAによるファイルの起動について

お世話になっております。 ファイルAにマクロを作成し、ファイルAのパスを求めます。 そして、ファイルBを開き、ファイルAのパス名でフィルタをかけ(仮にA列とします) それに対応するファイル名を求めます。仮にc列とします。 この場合、C列に書かれているファイル名(仮にファイルC)を起動するにはどうしたらよいのでしょうか? そもそもこんな事を考えたのは ファイルAに起動するファイル名を書いておき、起動することはわかるのですが、 今後起動する”ファイルC”の数が増えることが予想され、メンテナンスの面から ファイルAの存在するフォルダより起動する”ファイルC”を対応させたテーブル この場合”ファイルB”を作成し、そこのメンテナンスさえ行えば、ファイル数の増減にも 楽に対応できるのではと思ったからです。 そもそもこのような事は無理なのでしょうか? わかりづらい文章かもしれませんが、 宜しくお願い致します。

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>今後起動する”ファイルC”の数が増えることが予想され、メンテナンスの面から 質問の意図が良くわかりませんが、メインテナンスの目的もわかりません。 自動的にファイル数が増えるなら、増加に合わせて日付連番などにして、保存や後利用(何かのキーからファイル名を自動的に決定する等)可能な名前にするのも良いでしょう。 セルに書かれた名前のファイルを開くなら簡単です。 >ファイルAに起動するファイル名を書いておき、起動することはわかるのですが、 任意のセルの値を読み込んで、ファイル名として渡せばよいことですが? Path = thisworkbook.path & "\" F_name = Range("C3") workbook.open Path & F_name (タイプミスがあるかも)

その他の回答 (2)

  • WWolf
  • ベストアンサー率26% (51/192)
回答No.3

VBAで作るのも悪くはないのですが、ハイパーリンクを使ったほうがシンプルであるのと後々に応用が利きやすいと思いますよ。 フィルターをどうしてもかけたいのであれば例えばC列にハイパーリンクを貼りD列に関数を使ってにては? 質問自身の回答ではないのですが、#1#2さん同様そのような管理という意味は理解はするのですが、メンテや管理というなら方法論としては意図が理解しにくいです。 多分質問者さんのしたいことはVBAでなくとも可能であると思いますよ。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

解りづらいですね。 なぜBファイルが必要なのかも良く解りません。 基本的には開きたいファイルのフルパスを作ってやれば良いだけなので、やりたい事は可能だと思いますが。 例えばファイルAにマクロを書き、同じフォルダに置いたExcelファイル全てに処理をするというような運用ではダメなのでしょうか? 1.下記のようなマクロを書いたファイルを適当なフォルダに保存 2.同じフォルダに処理したいExcelファイルを置く 3.マクロを実行 Sub test1() Dim myFile As String, myPath As String  myPath = ThisWorkbook.Path & "\"  myFile = Dir(myPath & "*.xls", vbNormal)  Do While myFile <> ""    If myFile <> ThisWorkbook.Name Then     MsgBox myPath & myFile     ' Workbooks.Open myPath & myFile    End If    myFile = Dir  Loop End Sub

nabeo1
質問者

お礼

説明が不十分で申し訳ありません。 依頼者からの意図を充分把握しないで 作成しているので、自分でも整理できていない所 があったのかもしれません。 質問をする際には、わかりやすいように努めます。

関連するQ&A

  • VBAによるファイルの起動について

    Aというファイルに、B及びC及びDというファイル名及びパスを記述し、Aのマクロにてそれらを参照し、B・C・Dのファイルを起動するというマクロを 組んでいるのですが、B及びCは問題なく起動するのですが、Dのファイルは起動しません。 ファイルパスが記述されているのは、AというファイルのA列に記載しているのですが、A列が空白になるまで処理を行うようにマクロを作成しております。 ちなみにDのファイルが起動しないので、(実際にはファイルパスは記載されております)Msgboxを使用してDのファイルが書かれている場所は何が表示されるか確認してみたところ、"84201"というよくわからない値が表示されてしまいます。 そのために、Dのファイルが起動できないのですが どうしたらこの事象を解消できるのでしょうか? ちなみに空白になるまで行うという命令は DoWhile cells(i,1)<>"" ・・・・・ loop と記載しております。

  • 結合した文字列をファイル名に使えない

    Excel上に入力されているパス名とファイル名のデータを組み合わせて、 様々なファイルを開いたりコピーしたりするVBAのコードを作ろうとしています。 仮にシート上のA1セルに、C:\Documents and Settings\デスクトップ というパス名 A2セルに URIAGE.xls というファイル名が入力されていたとして、 A1の文字列データとB1の文字列データを結合する場合、 Sub FileSousa()  Dim a As String  Dim b As String  Dim c As String  a = Cells(1, "A").Value  b = Cells(2, "A").Value  c = Chr(34) & a & "\" & b & Chr(34)  Range("A3") = c としてみると、確かにA3セルには、"C:\Documents and Settings\デスクトップ\URIAGE.xls" と出力され、文字列が結合されたことがわかるのですが、その変数cのデータを使って  Workbooks.Open Filename:=c として、そのファイルを開こうとすると、ファイル名が見つからないとしてエラーになります。 ファイルはデスクトップ上の確かにその名前で存在しており、直接 Workbooks.Open Filename:="C:\Documents and Settings\デスクトップ\URIAGE.xls" とすると開きます。 " を Chr(34)によって入力したのがいけないのでしょうか、 Workbooks.Open Filename:=××× には、変数を置いてはいけないのでしょうか。 そもそも文字列の結合は、"あ" & "い" → "あい" となるのが基本だと思うのですが、 a="あ"、b="い"、c=a&b → c="あい"として結合した変数cについては、ファイル操作上のファイル名の設定項目として使えないのでしょうか。

  • Excel VBA でサブフォルダ含むファイル名取得

    勉強不足で申し訳ないですが、以下の処理をExcel VBAでやるにはどうしたらいいでしょうか? 仮に「C:\aaa」をルートフォルダとします。そのルートフォルダ下には「2008年」「2009年」など年の名前を付けたフォルダだけがあり、他に余計なファイル等はありません。そして、その「2008年」など年の名前のフォルダに、雑多なファイルが入っています。大雑把に図にすると、次のような感じです。 C:\aaa ├2008年 │ ├a1.pdf │ └a2.pdf │ └2009年   ├b5.pdf   └b6.pdf そして、添付の図のように、A列には「2008年」などサブフォルダ名が、B列には「a1」などファイル名が出力されるようにしたいのです。なお、 (1)B列のファイル名の拡張子は、消えれば最高ですが、別に消えなくてもいいです。 (2)B列のファイル名をクリックするとファイルが開けるハイパーリンクがあると、嬉しいです。別になくてもいいです。

  • VBAとロングファイル名

    EXCELのVBAで、「C:\My Documents」のようなロングファイル名を 「C:\Mydocu~1」のような昔のファイル形式にする方法を教えてください。 例えば ThisWorkbook.Pathで得たパス名がロングファイルだった場合です。 目的は、ある古い別アプリをShellで起動させたいのですが、それの 引数に昔のファイル形式で色々なパスを渡さないといけないのです。 (そのアプリがロングファイル名に対応していない) ヘルプとか見たんですけど分からないので教えてください。 お願いします。

  • エクセル(マクロ) 特定セルのファイル間コピペ

    マクロで下記内容の処理を行いたいと思っております。 どのようなコードにすればよいかご教授よろしくお願い致します。 1.A.xlsを開く 2.B.xlsを開く 3.B.xlsの特定セルの値をコピーする。(特定セルを仮にB4、C7、D9とする) 4.A.xlsのC列にあるファイル名リストから「B.xls」というファイル名の入ったセルを検索する。 5.仮に5行目に「B.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE5、F5、G5とする)に3.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 6.B.xlsを閉じる 7.C.xlsを開く 8.C.xlsの特定セルの値をコピーする。(特定セルはB.xlsと同じB4、C7、D9) 9.A.xlsのC列にあるファイル名リストから「C.xls」というファイル名の入ったセルを検索する。 10.仮に7行目に「C.xls」というファイル名があれば、同じ行にある特定列 (行は固定で、例えばE7、F7、G7とする)に8.でコピーしたB4、C7、D9の値を張り付ける。 ※B4はE列、C7はF列、D9はG列に対応するものとする 11.C.xlsを閉じる 12.D.xlsを開く 以下、同じ処理を繰り返す。

  • VBAのコードについての質問

    いつもお世話になっております。 以下の操作(添付ファイル)に対するVBAのコードを教えてください。 (1)シート1(添付ファイル左):B列に新聞名、C列に対象記事数 (2)マクロを実行することにより、シート2(添付ファイル左)の表が作成される。 質問したい事は、A新聞の記事数が3、B新聞の記事数が2なので、シート2にA新聞の行が3行作成され、その下に、B新聞の行が2行・・・・記事数が0の場合は行は作成されない。 のような事をやいりたいのですが、コードが分かりません。 どなたかよろしくご教授ください。

  • エクセル2000で質問です。

    あるファイルがあります。 仮にファイル名を「一覧」とします。 A列に商品コード、B列に商品名、C列に定価、D列に仕入れ価格、と入っていて行数で 約1000行(品目数)入っています。 基本的に内容の変更や更新は年に一度程度しかありません。 新たに別のファイルを作成する際に(仮にファイル名を「納品書」とします) B列に商品コードを入力すると「一覧」から抜粋して自動的にC列に商品名、D列に 定価を表示させたいのですが、そういう事は可能でしょうか?

  • EXCEL VBA 社員毎にファイルを分割したい

    お世話になります。 実績.xlsというブックがあります。 これは社内の各支店の売上実績を個人別に記述したファイルです。 内容は下記のような感じです。 A列=支店名 B列=担当者名 C列=売上金額 このデータが記述しているシートの端にボタンをつけてクリックすると、B列の担当者別にファイルを分割して、データも担当者毎に分けて(A-C列をそのままコピーでいいです)デスクトップにファイルを保存する、ということは出来るのでしょうか? ファイル名もA列+B列の支店名+担当者の名称で保存できれば最高です! どなたかご教授いただけませんでしょうか? 添付図の例ですと6つのファイルが保存されることになります。 環境 Windows7 Excel2013

  • エクセルVBAでテキストファイルにして保存する方法

    エクセル「Sheet2」のA列、C列、D列にそれぞれ100個の文字列が入力されています。 B列は空欄になっています。 (作業内容) C列とD列のデータを結合して、B列に入力 A1~B100のデータを1つのテキストファイルとして保存する。 ファイル名はその都度指定する。 よろしくお願い申し上げます。

  • 【VBA】同一ディレクトリ内のファイル名取得とA列

    【VBA】同一ディレクトリ内のファイル名取得とA列、B列のコピペ A.xlsに同一ディレクトリ内にあるyyyymmdd.csvファイルを順に読み取り A.xlsの A1に対象ファイル名 B列に対象ファイル内のA列をコピペ C列に対象ファイル内のB列をコピペ 次のファイルはD1 その次はG1 ・ ・ といった処理をさせたいです。 どのように記述すればよいでしょうか。 よろしくお願いしますm(._.)m

専門家に質問してみよう