• ベストアンサー

エクセルVBAでのブック名の取得について。

こんにちは。よろしくお願いします。 自身:a.xls 他:1.xls、2.xls、3.xls 上記全てを開いた状態で、a.xlsのA列に、a.xls以外のブック名を文字列として取得しました。 A 1.xls 2.xls 3.xls この状態で、更に、 追加:11.xls、12.xls、13.xls というブックを開いた場合(1、2、3は開いたまま)に、B列に上記3つのみのブック名を文字列として取得したいと考えています。が、A列に取得したところで行き詰ってます・・・。 ご教授願えると嬉しいです。 よろしくお願いします。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

取得したブック名がA列に無い事をCOUNTIFで確認してからB列に貼り付ける…で、良いと思います。 こんな感じで……。 Sub test()  Dim wb As Object  Dim i As Integer  i = 1  For Each wb In Workbooks   If wb.Name <> ActiveWorkbook.Name And Application.WorksheetFunction.CountIf(Range("A:A"), wb.Name) = 0 Then    Cells(i, 2).Value = wb.Name    i = i + 1   End If  Next End Sub End Sub

aa723aa
質問者

お礼

満足な結果を得ることがでしました。 すんなりと納得のいく回答に感謝しています。 ありがとうございました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

A列に表示されているブックは開いた状態であれば 取得したブック名がA列に表示されていない場合のみB列に表示 とか A列の最終行を最初に取得して、その数までブック名を取得したらB列に移動して書き込む とか 今ちょっと手が離せないので、マクロまでは作れないので考え方のみになってしまいますが。

aa723aa
質問者

お礼

お忙しいにも関わらず、アドバイスをありがとうございました。 色々な方法があるのですね!まだまだ勉強と柔軟な考え方が必要だと感じました。

全文を見る
すると、全ての回答が全文表示されます。
  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.1

現在のマクロはどのような形式でしょうか? マクロ自体を補足で提示してもらえれば回答を得られやすいと思いますよ。

aa723aa
質問者

補足

Sub test() Dim wb As Object Dim i As Integer i = 1 For Each wb In Workbooks If wb.Name <> ActiveWorkbook.Name Then Cells(i, 1).Value = wb.Name i = i + 1 End If Next End Sub こんな感じなところでとまってます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Excel

    A.xlsとB.xlsの2つのブックがあります。 A.xlsのSheet1のB2セルに文字列が入っています。その文字列にはJ3など列と行の組み合わせの値になってます。 このA.xlsのSheet1のB2のセルの文字列を使ってB.xlsのSheet1の上記のB2に書かれた位置のセルの値を取得したい。 これを実現するにはどうすればいいですか? ご教授お願い致します

  • VBAで、アクティブなBOOKのファイル名を取得し

    エクセルのVBAを使用して、選択されている、BOOKのファイル名を取得し、下記のように編集してA1セルに入れたいのですが、可能でしょうか? BOOKのファイル名が「大阪_たこ焼き_1234.xls」の場合 大阪_と.xlsをは省いて、「たこ焼き_1234」がA1セルに入るようにしたい。

  • 複数のエクセルブックを一覧にすることはできますか?

    200個くらいの同一形式のエクセルを一覧にしたいのですが、 アクセスがない為、エクセルでなんとかできないかと、悩んでおります。 データは1つのフォルダの中に、 1.xls 2.xls ・ ・ ・ 200.xls と200個あり、それぞれA1:N20の範囲の中のセル内容を、 __|_A列_|_B列_|_C列_|・・・|_?列 _| 1行 |_1.xls_|_A1 _|_B1 _|・・・|_N20 _| 2行 |_2.xls_|_A1 _|_B1 _|・・・|_N20 _| 3行 |_3.xls_|_A1 _|_B1 _|・・・|_N20 _| 上記のように、 A列にファイル名を入れて、B列以降に1つのブックの内容を入れたいです。 (A列へのファイル名は、なくても最悪OKなのですが・・・。) 説明が足りないかもしれませんが、どなたか教えてください。 よろしくお願い致します。

  • 【Excel-VBA】アクティブセルが参照しているブックを開くには?

    いろいろ検索したのですが、見つからないので質問させていただきます。 対象のセルが他ブックのセルを参照しているとき、そのブックが開かれていない場合、正しい値にはなりません。 (例:A1に =[Book2.xls]Sheet1!$A$3 が入力されている) そこで、そのセルが参照しているブックをVBAで自動的に開く方法を考えています。 つまり、例で言えば、Book2.xlsを開きたいのです。 文字列関数を使ってひとつひとつの文字を取得し、ファイル名を得て開く方法しかないのでしょうか? 何かいい方法があれば教えてください。 よろしくお願いします。

  • EXCEL VBA 貼り付け

    A.xls 、B.xlsと二つのブックがあります。 A.xls のA列の最終行がA100だった場合は、A.xlsのA101以降にB.xlsのA2以降のデータ、A.xlsのB101以降にB2以降のデータA.xlsのC01以降にC2以降のデータを貼り付けたいのですが・・ ※A.xls のA列の最終行を取得して、B.xlsのデータをA.xlsの最終行に貼り付ける。 よろしくお願いいたします。

  • エクセル2つのブック列の比較 VBAや関数について

    Aと言うブックとBと言うブックがあるとして、 Aのブックは共有ファイルではなく、Zサーバー上にあるエクセルファイルです。 Aのブックに色々な人が行の挿入、商品名の書き換え等をしていて、いつ挿入されたのかが分からないため、VBAや関数を使って調べたいのですが、 Aのブックは10シートあり、サイズ別で行も並べられているため、新しい情報を特定するのが困難です。 BのブックはAと同じシート名を作り、必要箇所だけコピーしているデータです。(オリジナルブック) やりたいことは、Aのブックから探してBのブックに追加されていない情報、一致していない情報があれば、色を付けてわかりやすくするか、Bのブックの新しいシートに結果を出すようなことがしたいのですが、可能でしょうか? AのブックはA列-IC列まであるのですが、必要な部分は全シートB列(商品コード)とE列(商品名)のみです。 Bのブックには同じシート名にして、A列に商品コード、B列に商品名としております。 AのブックのB列、E列を参照して、BのブックのA列、B列になければ、結果を表示したいです。 もし出来る方法があれば、教えてほしいです。 今はシートごとに左右比較して、見ていってるのですが、10シートの中に、行数は2000行くらいあるため、それで半日おわってしまいます。 もし分かるかた、マクロを組める方がいれば教えて頂きたいです。宜しくお願い致します。

  • カレントブックのファイル名の取得

    早速ですが。 カレントブック(例:test.xls)の名前をどうやって取得できますか。 マクロ(code)にカレントブック名を固定値(test.xls)で指定していますが、 下記のように、改善したいと思いますが、 ================================= test.xlsのマクロに PCvsFileName="test.xls" Windows("PCvsFileName").Activate ================================= 該当xlsファイル名は常に変わるから、カレントブックのファイル名の取得方法が 知りたいです。 よろしくお願いします。

  • エクセルVBAで複数のファイルをひとつにまとめる

    はじめまして。 VBA初心者で恐縮なのですが、教えてください。   ブックAAAがあるフォルダ内に複数ある「***.xls」の全てのフイルのシート「A」内の特定のセル(A1:F30)の文字列を、全てブックAAAの1つのシートの特定の列(A:F)に重ねてまとめたいと思っています。 但し、シート「A」は非表示となっていて、また、「***.xls」のファイルは全て「ブックの保護」がかかっているため、シート「A」を表示させるためにはパスワードの入力が必要となります。 これをVBAを使って実行することは可能でしょうか。複雑で手に負えず行き詰っています。 どなたかご存知の方いらっしゃいましたらご教授願います。 エクセル2007を使用しております。  

  • VBA(Excel):他のブックからシートごと取込みたい

    他のブックからシートを取込む(シート名を変更して)VBAがわからないのですが、どなたか詳しい方がいましたら、ご教授下さいませ。 以下を例として、ご回答いただけると幸いです。 よろしくお願いします。 ---------------------------------- 次の3つのブックが存在するとします。 a.xls b.xls c.xls a.xlsにはシートが1つだけあり、シート名は"sheet1"です。 b.xlsにはシートが1つだけあり、シート名は"sheet1"です。 c.xlsにはシートが3つあり、シート名は"sheet1"、"sheet2"、"sheet3"です。 a.xlsにVBAマクロを作り、a.xls上で実行させて、 a.xlsの"sheet1"は残したまま、 b.xlsの"sheet1"のシート名を"sheet1-b"に変更して、 a.xlsのシートとして取込み、 同様に今度は、 a.xlsの"sheet1"、"sheet1-b"は残したまま、 c.xlsの"sheet1"のシート名を"sheet1-c"に変更し、 c.xlsの"sheet2"のシート名を"sheet2-c"に変更し、 c.xlsの"sheet3"のシート名を"sheet3-c"に変更し、 a.xlsのシートとして取込み、 最終的に、a.xlsには、 "sheet1"、"sheet1-b"、"sheet1-c"、"sheet2-c"、"sheet3-c" の、5つのシートが存在するようにしたいのです。 (各シート上のデータは、a.xlsの各シートとしてすべて移行されている) ----------------------------------

  • EXCEL VBA 別ブックから貼り付け

    お世話になります。 A、Bという2つのブックがあります。 A.xls データファイル B.xls 処理実行ファイル Bブックを開いてSheet1に置いてあるボタンを押すとファイル洗濯ダイヤログが出てきて、そこで指定したBブックをsrtPathに格納(シートは1つだけ)のBブックのA1から全データをAブックのSheet1に貼り付けたいのです。 下記VBAを書いてみましたがエラーになってうまく動きません。 Workbooks(strPath).Range("A1").Copy ActiveWorkbooks.Worksheets("Sheet1").Range("A1").PasteSpecial どなたが解決方法をご教授いただけませんでしょうか。 よろしくお願い致します。

専門家に質問してみよう