- ベストアンサー
別bookのシート名一覧を取得するVBA(都度)
- エクセルVBA初心者向けのマクロ作成方法について質問です。別のブックのシート名を取得するマクロを作成したいですが、ファイル場所を指定するダイアログボックスの表示方法が分かりません。
- 作成したマクロを実行すると、ファイル場所を指定するダイアログボックスが表示され、指定したブックのシート名一覧がアクティブブックのA列に入力されます。
- また、別のブックのシート名一覧を比較するために、B列にも入力するためのマクロを作成したいと考えています。ご教示いただけると助かります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
以下のコードでいいでしょうか。 Sub test1() Dim strFilePath Dim tgBook As Workbook Dim SCol As Long Dim i As Long With ThisWorkbook.Sheets(1) '書き出す列番号を取得 If .Cells(1, 1).Value = "" Then SCol = 1 Else SCol = .Cells(1, Columns.Count).End(xlToLeft).Column + 1 End If 'ダイアログを使い、ブックを選択させ strFilePath = _ Application.GetOpenFilename(Filefilter:="Excelブック,*.xlsx") If strFilePath = False Then Exit Sub '選択したブックを開き、シート名を取得、格納 Set tgBook = Workbooks.Open(strFilePath) For i = 1 To tgBook.Sheets.Count .Cells(i, SCol).Value = tgBook.Sheets(i).Name Next i '指定したブックをクローズ tgBook.Close End With End Sub
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
ごちゃごちゃと質問に勉強課題を詰め込み過ぎ。 VBAの本の1冊でも買って、備えて見ているか?またWEB照会の癖を付けているか? ーー (1)どのbookを開くか?ファイル場所を聞いてくる段階 (2)(1)で指定したブックを開き、 (3)そのシート名をすべて、今開いているブックのXXシートのA列A1からに表示 >bookのA列ーー>シート名xxを意識することをが大切な事を、たたき込め。 フルパスーブックーシートーセルの構造意識をね。 ーーー (1)は「ファイル選択ダイアロウグ」などで、WEB照会すれば出てくる。 (2)は簡単で、下記の、「表示のみの場合」の部分 Sub test01() Set wb2 = ActiveWorkbook Set wb1 = Workbooks.Open("C:\Users\惇\Documents\データ抜出.xlsm") '----表示するだけの場合 For Each sh In wb1.Worksheets MsgBox sh.Name Next '---シートに書き出しの場合- i = 1 For Each sh In wb1.Worksheets wb2.Worksheets("Sheet1").Cells(i, "A") = sh.Name i = i + 1 Next End Sub しかしシートに書き出す場合は、ブックが2つ問題になっているので、それらを区別するのは 案外今まで、学習対象としていないのではないか?独学では漏れる課題がたくさん出てしまうので、注意。 === やや、自分がしたい課題に、すぐ取り掛かりたがっているが、 標準的な処理の課題(これはVBAを知らなくても、箇条書きで文章に書き上げられる) について、VBAコードをWEBや本から抜き書きして、相当増やしたのちに、こういう課題をすべきと思う。VBAで頻出課題を集めたVBAの本も常備すべきだろう。 ーーー 全般に箇条書き的記述ステップを整理して意識=プログラム作成に近い)意識が薄いのでは? VBAのほかに、ファイルを扱うFSOなども必須・便利なので、勉強を拡げておくべきと思う。 その他、近い将来に、WEB情報をどう取り込むかなど。
お礼
ありがとうございます。まさに、VBAの本を買うべきと痛感しました。今後どうぞよろしくお願いします。
- kkkkkm
- ベストアンサー率66% (1719/2589)
> この2つを組み合わせたいのですが、何故かうまくいかないため、 どのように組み合わせてうまくいかなかったのか、実際のコードを示さないと、直し方を説明できません。
お礼
最初にご回答頂き感謝です。たくさんのサイトを見ていましたが、わからなかったので質問しました。その時点で勉強不足ですね。ここのサイトではそういう弱者に対して親切な方がいらっしゃいますので甘えてしまいまひた。今後勉強を頑張ります。
- kkkkkm
- ベストアンサー率66% (1719/2589)
> ファイル場所を聞いてくるマクロは調べてもでてこない なわけないと思いますが、腐るほど出てきます。 vba ファイルを開く ダイアログ https://www.google.com/search?q=vba+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%96%8B%E3%81%8F+%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AD%E3%82%B0&oq=vba+%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E9%96%8B%E3%81%8F&aqs=chrome.2.69i59j0i512l9.8240j0j7&sourceid=chrome&ie=UTF-8 > シート名一覧を作成する シート名の取得(セルと配列に格納) https://www.moug.net/tech/exvba/0040020.html
補足
回答ありがとうございます。 この2つを組み合わせたいのですが、何故かうまくいかないため、セットで教えていただける方を探しております。 すみません、組み合わせだ形で教えていただけるとたいへんたすかります。
お礼
成功したうえに、エラーがおきた原因もわかりました!!!本当にありがとうございました。可能でしたらまた次回質問させてください。