いつも丁寧に教えていただき感謝いたします。
今回はExcel2010のVBAについて教えて下さい。
###前提・実現したいこと
Excelブックの一覧を元に、ブックを開かずに(画面を表示せずに)全てのシート名を抽出し、
シート名を含めた一覧を作成したいです。
Excelのマクロブックにあるシート"FileList"には
A列に確認したいブックが置かれているフォルダのフルパス
B列に確認したいブック名
がそれぞれ記載されています。
1行目はカラムなので実際のデータは2行目から始まります。
上記の情報を元に、ブックが開かれている事を表示せずに
同じマクロブックにあるシート"Sheets"の2行目から
以下の様な表を起こしたいです。
A列 B列 C列
フォルダパス ファイル名 シート名
C:\test TEST1.xlsx Sheet1
C:\test TEST1.xlsx Sheet2
C:\test TEST1.xlsx Sheet3
C:\test Book1.xlsx Top
C:\test Book1.xlsx TestSheet
<<以下略>>
###発生している問題・エラーメッセージ
VBAを作成してみたのですが、
実行時エラー'424':
オブジェクトが必要です。
というエラーが出てしまいます。
###該当のソースコード
Excel2010
1Sub SheetName() 2 'シート含めたブックリスト作成 3 4 Dim xlApp As Excel.Application 5 Dim xlBook As Excel.Workbook ' 対象ファイルのファイル名 6 Dim xlSheet As Excel.Worksheet ' 取得したシート名 7 Dim b As Integer ' Book数=b 8 Dim s As Integer ' 各BookのSheet数=s 9 Dim i As Integer ' シート確認結果入力時の行数 10 Dim BookCnt As Integer ' ブック数カウント値 11 Dim SheetCnt As Integer ' シート数カウント値 12 Dim filePath As String ' 対象ファイルのパス部分 13 Dim fullPath As String ' 対象ファイルのフルパス 14 15 Set xlApp = CreateObject("Excel.Application") 16 17Sheets("FileList").Select 18BookCnt = Range("A2").End(xlDown).Row ' 対象ファイル数確認(行数確認) 19 20i = 0 21 22For b = 0 To BookCnt 23 Sheets("FileList").Select 24 Range("A2").Select 25 26 27 filePath = ActiveCell.Offset(b, 0).Value 28 Set xlBook = ActiveCell.Offset(b, 1).Value 29 30 31 SheetCnt = (filePath + "\" + xlBook.Sheets.Count) ' 対象ファイルシート数カウント 32 For s = 1 To SheetCnt ' 対象ファイル数確認(行数確認) 33 34 xlSheet = Sheets(s).Name 35 36 Sheets("Sheets").Select 37 Range("A2").Select 38 39 With ActiveCell ' 結果をセルにデータ書き込み 40 .Offset(i, 0).Value = filePath 41 .Offset(i, 1).Value = xlBook 42 .Offset(i, 2).Value = xlSheet 43 End With 44 45 i = i + 1 46 Next s 47 48Next b 49 50End Sub
###試したこと
エラーの内容についてはWebや過去の投稿を検索してみましたが
コレという内容がわかりませんでした。
Set xlApp…の下の行に以下を追加
Set xlBook = CreateObject("Excel.Workbook")
すると以下のエラーが出ます。
実行時エラー'429':
ActiveX コンポーネントはオブジェクトを作成できません。
https://teratail.com/questions/25735
も見ましたが、よく理解することが出来ませんでした。
申し訳ありませんが、本件解決のお知恵をお貸しいただきたく投稿させていただきます。
情報の過不足が有りましたら捕捉いたしますのでコメントにてお願い致します。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/16 06:54