こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数のExcelブックをまとめるソフト

中を見ていただき、ありがとうございます。

現在、一つのフォルダの中にある複数のエクセルファイルを、一つにまとめるソフトを探しています。
いくつか探してみましたのが、使っている環境のセキュリティが厳しいので、VBAを使う方法や、インストールが必要なソフトは使えず、困っております(管理者に頼んでセキュリティを外してもらうことはできません)。バッチファイルは試していません。

機能としては以下のものを備えている必要があります。
・複数のブックのシートだけを1つにまとめる(各ファイルは、1シートでできています)
・シート名が、ファイル名と同じになる
・まとめるファイルは、xls形式とxlsx形式とが混在していても良い
・マクロを使っていない
・インストールしなくても使える

もしご存知でしたら、お教えいただけますと大変助かります。

投稿日時 - 2011-01-31 14:19:14

QNo.6487957

困ってます

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

> VBAを使う方法や、インストールが必要なソフトは使えず、困っております

このVBAを使う方法がダメというのはVBAが入ったエクセルをVBA有効で開くことができないということですか?
ならば、一回きりのことですから、マクロを使う方法ですがこうしてみませんか?

新規にエクセルのファイルを一つ作ります。(保存はしません)
その新しいエクセルのファイル(BOOK)にマクロをコピペします。

そのマクロはそとから持ち込んだものでないので多分実行できるはずです。
マクロを実行すると、フォルダーを聞いてきますから、そこでフォルダーを指定すると、ご要望の「一つのフォルダの中にある複数のエクセルファイルを、一つにまとめたデータ」が出来上がります。
そのまとまった複数のシートを選択して新しいくエクセルのファイルに保存してください。

マクロを書いたファイルは保存しないで終了してください。

手順は以下のとおりです。簡単ですよ。

1.新しいBOOKを開き、AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。
2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。

'********これより下**********

Sub TEST01()
  Dim myObj As Object
  Dim myDir As String, myFle As String
  Dim ws As Worksheet, mb As Workbook, wb As Workbook
  Set myObj = CreateObject("Shell.Application"). _
  BrowseForFolder(0, "フォルダを選択してください", 0)
  If myObj Is Nothing Then Exit Sub
  If myObj = "デスクトップ" Then
    myDir = CreateObject("WScript.Shell").SpecialFolders("Desktop")
  Else
    myDir = myObj.Items.Item.Path
  End If
  Application.ScreenUpdating = False '画面更新を一時停止
  Set mb = ThisWorkbook
  myFle = Dir(myDir & "\*.xls*") 'フォルダ内のExcelブックを検索
  Do Until myFle = Empty '全て検索
    If myFle <> ThisWorkbook.Name Then 'ブック名がこのブックの名前でなければ
      Set wb = Workbooks.Open(myDir & "\" & myFle) 'そのブックを開きwbとする。
      wb.Worksheets(1).Copy After:=mb.Sheets(mb.Sheets.Count) '1枚目のシートをコピー
      Set ws = mb.Sheets(mb.Sheets.Count)
      ws.Name = wb.Name '名前をwbのBook名に
      wb.Close (False) 'wbを保存しないで閉じる
    End If
    myFle = Dir 'フォルダ内の次のExcelブックを検索
  Loop '繰り返す
  Application.ScreenUpdating = True '画面更新一時停止を解除
End Sub

'********これより上**********

3.Alt+F11キーでワークシートへもどります。
4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。

投稿日時 - 2011-01-31 17:29:08

お礼

ご回答ありがとうございました。
また、御礼が大変遅くなり、申し訳ございませんでした。

ご教授いただいた方法で、望どおりの結果を得ることができました。食わず嫌いと申しますか、マクロとセキュリティのことに関して無知だったと申しますか、とにかく蒙昧を啓いていただき、ありがとうございました。

投稿日時 - 2011-02-14 16:00:30

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

データの形式を確認ですが。


すべてCSVファイルに書き出すとかアクセス使うとかでも良ければ、なんか出来そうですし、1回限りの作業なら悩むより手作業のが早い可能性あり。

投稿日時 - 2011-01-31 14:34:32

お礼

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

マクロで行なってみることにいたします。

投稿日時 - 2011-02-14 15:58:51

あなたにオススメの質問