重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【6/2終了】教えて!goo新規会員登録

お世話になります。
複数のブックをひとつにまとめるという質問は過去にもたくさんあったのですが次の場合の対処がわかりませんでしたので教えてください。
なお手動でやるのではなく、マクロやフリーソフトなどで自動化したいと思っています。

1つのフォルダに複数のブックがあり、各ブックには複数のシートがあります。各ブックの先頭シート(一番左のシート)だけを1つのブックにまとめたいのです。
現在、各ブックの先頭シート(一番左のシート)の名前には「人の名前」が入っています。
1つにまとめるブックを 全員.xls として、このブックの各シートに各ブックの先頭シート(一番左のシート)の名前(人の名前)をつけて保存したいのです。

結合する際に「人の名前」のようにシート名が違うことが問題になるならば、すべてのブックのSheet1だけをまとめるというやり方でも構いません。
この場合、全員.xlsの各シート名は適当でも良い。

よろしくお願いします。

A 回答 (2件)

一番左のワークシートはシート名にかかわらず、Worksheets(1)で取得できるので、


全員.xlsの標準モジュールに以下のような感じで出来ると思います。
各ブックと全員.xlsは同じフォルダにあるものとします。

Sub test()

Dim FSO As Object
Dim fName As File
Dim MyFolder As String
Dim wBook As Workbook

MyFolder = ThisWorkbook.Path
Set FSO = CreateObject("Scripting.FileSystemObject")

For Each fName In FSO.GetFolder(MyFolder).Files
If FSO.GetExtensionName(fName) = "xls" And _
FSO.GetBaseName(fName) <> "全員" Then
Set wBook = Workbooks.Open(fName)
wBook.Worksheets(1).Copy _
after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
wBook.Close
End If
Next

Set FSO = Nothing
Set wBook = Nothing

End Sub

この回答への補足

ご回答ありがとうございます。2行目のDim fName As File のところでユーザー定義型が定義されてません のエラーが出ました。この行を削除したら問題なく動きました。あと、デスクトップ上では問題なく動きますが、サーバー上では結合するブックを見つけられないというエラーがでます。もしよろしければアドバイスください。

補足日時:2006/04/04 21:51
    • good
    • 0

>2行目のDim fName As File のところでユーザー定義型が定義されてません のエラーが出ました。



ごめんなさい。
当初はWindowsScriptHostObjectModelに参照設定して、
Dim FSO As New FileSystemObject としていたものですから・・・。アップする前に修正するのを忘れてしまいました。
Dim fName As Object に修正します。

>デスクトップ上では問題なく動きますが、サーバー上では結合するブックを見つけられないというエラーがでます。

結合する各ブックと、マクロブック(全員.xls)の位置関係はどうなっていますか?
同じフォルダにあれば、問題なく動くと思いますが・・・。
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2006/04/18 22:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!