実験データ(数値)をエクセルデータに変換してまとめる時
シート一枚分のエクセルブック(ファイル)が
30~50個できるのです。

そして、そのシート一枚、一枚を
ひとつのエクセルブックにまとめる作業があって
いちいちファイル開いて、シートタブをクリックして
新しいファイルにコピーするんですが…
これが非常~にめんどくさい!!(^^;

例えばエクセル上に複数開いてるファイルのシートを
一気に新規ブック(ファイル)にまとめるような
技は無いのでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (5件)

マクロを書いちゃうのが一番簡単でしょう。



汎用性を求めると面倒ですけど、まとめるのは、それぞれ一回ぽっきり
なんですよね。

まず、まとめる元のブックを全部オープン(まとめて、ドロップ)しておき
ます。で、まとめる先のブックとして、新規に一つブックを作成します。

新規に作成したブックの名前を Book1 、まとめる元のブックの名前を
result1、result2 … 、それぞれのブックのシートの名前を sheet と
すると、

Sub CollectSheet()
  Workbooks("result1").Sheets("sheet").Copy Before:=Workbooks("Book1").Sheets(1)
  Workbooks("result2").Sheets("sheet").Copy Before:=Workbooks("Book1").Sheets(1)
   …
  Workbooks("result30").Sheets("sheet").Copy Before:=Workbooks("Book1").Sheets(1)
End Sub

とマクロを書いて実行。

何度も使うようであれば、テキストファイルで保存しておいて、
その度に、ペーストすればよし。

力技ですが、却って自由度は高いかも。
    • good
    • 0
この回答へのお礼

おぉ^^ありがたい
早速明日試してみます。
実験データなのでファイル名は続き番号、
このマクロも比較的簡単に書きなおせるようだし・・・

お礼日時:2001/04/16 21:55

元ファイルがCSVの1ファイルであるのなら,


前述したアクセスを使う手もあります.手順では

(1)CSVファイルをアクセスに取り込み
 ↓
(2)テーブルデータをエクセルへ外部データで保存
 ↓
(3)エクセルで確認

既にCSVで30ファイルある場合でも(1),(2)の後に
次のCSVファイルを「指定したテーブルに保存」を
選択すれば,データを続いて保存できます.

アクセスをお奨めするのは,エクセルシートに比べて
より多くデータ数を取れるためで,エクセルだと行数
が足りなくなる可能性があるからです.

データ(1行分=1データ)がそれほど多くない場合は
やはりa-kumaさんのが手っ取り早いですね.
    • good
    • 0

読み違えました.


エクセルファイルにしようとしているのですね.
では,もとのファイル形式は何なのでしょうか?
補足してもらえれば,対応できるかもしれません.

この回答への補足

元のファイルはコンマ(,)で区切られた
数値データです。それをエクセルファイルに変換するのは
出来ます。(というかすでに変換されて、エクセルファイルとしてセーブされてます)
それらシート一枚ずつセーブされた
複数(30以上)のエクセルファイルを
一個のブックファイルにしたいのです。

補足日時:2001/04/16 17:55
    • good
    • 0

アクセスにデータを移すなら,アクセス側の機能を使いましょう.アクセスには「外部データの取り込み」機能があります.



【プルダウンメニュー】
「ファイル」-「外部データの取り込み」

を使うと1シート目は設定など手間が掛かりますが,1シート目以降はエクセル側だけの操作で,アクセステーブルにデータを取り込むことができます.

詳しく書くほどのこともないので,とりあえず,アクセスのプルダウンメニューからやってみてください.そんな難しくないと思います.
    • good
    • 0

OMIさんの求める答えになっているかどうかわかりませんが…。


移動したいシートにカーソルを移動・選択して(shiftを押しながら複数選択もできる)右クリックをすると「移動またはコピー」が出てくるからこれをクリック。移動先ブック名と挿入先を指定しOKを押すと指定したシートが移動する。
またこのとき「コピーを作成する」にチェックを入れておくと複製されたものが移動する。移動先ブック名に表示されるBOOKはそのとき開いているBOOKと新規のものだけ。
どうです?ちょっとは楽になりますか??

この回答への補足

う~ん、そのやり方でも30個位あるファイルを
一つのファイルにまとめるのは、結構しんどいっす^^;

今使ってるのは2000なんですが。僕の知る限り
古いエクセル(95のいっこ前)には、
エクセル上に開かれてる複数のファイルを
まとめたいファイル名を指定するだけで
ひとつのブックにしてくれる機能が有ったのです。
それと同じようなことが出来ないのかな~と
思ったんですが…

補足日時:2001/04/16 17:14
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで3つのブック(中は3つのシート)を同時に開いた時に常に2番目のシートが開いているようにするには?

こんにちは、みなさん!!

【質問】エクセルの3つのブックがあります。中身は3つのシート
があり、全て同じフォームのシートです。

そこで、同時に3つのブックがを開いた時に、ブックの中の1つめのシートではなく、2つ目のシートが常に表示されるようにする事はで
きますか?

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

3つのブックのそれぞれに対して以下のことをしてください

(1)ブックを開き、ALT+F11でVBE画面を開く
(2)画面左上のVBAProjectエクスプローラのThisWorkBookを右クリック→コードの表示
(3)以下のマクロを右側に開いた画面に貼り付ける
Private Sub Workbook_Open()
Worksheets("Sheet2").Activate
End Sub
(4)2行目のシート名を表示したい実際のシート名に書き換える
(5)シート画面に戻り、Bookを保存する

これで次にBookを開くと二番目のシートが最初に表示されます

Qエクセルのファイルで、あるブックの中の一つのシートを、別のエクセルのブックの中にコピーすることって出来ますか?

タイトル通りなのですが、エクセルの、あるブックの中の一つのシートを、別のエクセルのブックの中にコピーすることって出来ますか?

一つのブック内では、コピーや移動する事は出来るようですが、他のブックに移動やコピーする事が出来ません。
シートの中の内容をコピーして、貼り付けても表などが崩れてしまうようですし…

そのような機能がないのでしたら諦めますが、ご存知でしたら、よろしくお願い致しますm(__)m

バージョンはエクセル2002です。

Aベストアンサー

Aのブックのシート1をBのブックへ
コピーすることとします。

Aのブックのコピーしたいシートの
名前にカーソルをあて右クリックします。

メニューがでますので、
「移動又はコピー」を選びます。

移動したいブックを選び
(その際、新規のブックをたちあげるか、
別のブックを開いておくと便利)

挿入先をシート1に指定して

完了です。

慣れると簡単です。
つい、先日、主人に教えてあげたら
「目からウロコ」と言ってました。

QVBAエクセルにて開いてないエクセルシートを開いてるシートに所得

お世話になります。

「同じフォルダー内にBOOKが2つ有ります。1つ(AK.xls)を立上げて
もう1つの(EX.xls)を立上げずに、EX.xls内のSheet1をコピーして
AK.xlsのシート(STEP1)に貼り付けようとしています。」

どうしてもエラーが出てしまいます。
何方か、分かる方教えて下さい。
また記述して戴ければもっと助かります。

エラーは”1004”EX.xlsが見つかりません。と出てしまいます。

Sub ST()
Dim wsSrc As Worksheet, WS As Worksheet
Dim PasteR As Range
Dim x As Long

Sheets("STEP1").Select
Cells.Select
Selection.Delete Shift:=xlUp
Range("A1").Select

  Set wsSrc = ActiveSheet
Workbooks.Open "EX.xls"
For Each WS In Worksheets
x = WS.Range("A1").CurrentRegion.Rows.Count
If WS.Index = 1 Then
Set PasteR = wsSrc.Range("A1")
Else
Set PasteR = wsSrc.Range("A65536").End(xlUp).Offset(1)
End If
WS.Range(WS.Cells(1, 1), WS.Cells(x, 44)).Copy PasteR
Set PasteR = Nothing
Next
ActiveWorkbook.Close False
Set wsSrc = Nothing
End Sub

デバックでは
Workbooks.Open "EX.xls"この部分が黄色になります。

是非、回答を宜しくお願い致します。

お世話になります。

「同じフォルダー内にBOOKが2つ有ります。1つ(AK.xls)を立上げて
もう1つの(EX.xls)を立上げずに、EX.xls内のSheet1をコピーして
AK.xlsのシート(STEP1)に貼り付けようとしています。」

どうしてもエラーが出てしまいます。
何方か、分かる方教えて下さい。
また記述して戴ければもっと助かります。

エラーは”1004”EX.xlsが見つかりません。と出てしまいます。

Sub ST()
Dim wsSrc As Worksheet, WS As Worksheet
Dim PasteR As Range
Dim x As Long
...続きを読む

Aベストアンサー

Workbooks.Open "c:\EX.xls"

というふうに EX.xls がどこにあるのか フルパスで指定してあげたら
いかがでしょうか。

Qエクセル:ブックを開くとき、自動で任意のシートで開きたい。

よろしくお願いします。

ある、エクセルファイル(ブック)に、
「月」、「火」、「水」、・・・(←「 」内はシート名)、というシートをあらかじめ、作っています。
そのエクセルファイルを開くとき、そのファイルを開く当日が、
月曜日ならば、「月」、
火曜日ならば、「火」、
水曜日ならば、「水」・・・
というように、自動でそのシートを出すように開きたいのです。

マクロだと思いますが、ご指導をお願いいたします。

Aベストアンサー

はい、マクロになりますね。

1.Altキー+F11キーでVBE画面を出します。
2.メニューの挿入、標準モジュール
3.以下をコピーペ

Sub Auto_Open()
Dim wd As String
wd = Left(WeekdayName(Weekday(Date)), 1)
Sheets(wd).Activate
End Sub

以上です。

Q複数シートの一部をシート一枚にまとめるには?

住所録があります。 一枚のシートに住所、名前、電話番号が横にならんで3つのセルに記載されているのですが毎月100シートほど出来上がっておりこれを一枚のシートに手入力で転記しております。
あまりにも非効率的なのでVBA等で一括処理をしたいのですがどうすればよいでしょうか?

Aベストアンサー

こんにちは。
既に回答は出ているようですが、こんな風にしたらどうでしょうか。

iHEAD オプションのタイトルというのは、

 住所  名前  電話番号

こうなっていることです。

すでに集計用のシートが決まっているなら、このようにします。
ただし、集計用のシートは、右端に追いやられます。

先頭に、(') をいれ、コメントブロックします。
  'Set DataSh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))

コードのコメントブロックを外します。
 ''集計用のシートがすでに決まっているなら、上の行に、「'」を付けて、ここに登録する
  Set DataSh = .Worksheets(シート名)
  If DataSh.Index <> .Worksheets.Count Then
    DataSh.Move After:=.Worksheets(.Worksheets.Count)
  End If

行が満杯になったら、新しいシートが右隣に、加えられます。

標準モジュール
'-----------------------------------------------
Sub TransferData()
  Dim DataSh As Worksheet
  Dim i As Integer
  Dim j As Long
  Dim n As Long
  Dim k As Integer
  Const iHEAD As Integer = 1 '(0はタイトルなし、1はタイトルあり)
  If iHEAD > 1 And iHEAD < 0 Then MsgBox "iHEAD エラー!", , "定義エラー": Exit Sub
  Const mErrNum As Integer = 513
  
  With ActiveWorkbook
    '--------------------
    Set DataSh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
    
    ''集計用のシートがすでに決まっているなら、上の行に、「'」を付けて、ここに登録する
    'Set DataSh = .Worksheets("Sheet1")
    'If DataSh.Index <> .Worksheets.Count Then
    ' DataSh.Move After:=.Worksheets(.Worksheets.Count)
    'End If
    
    If iHEAD > 0 Then
      .Worksheets(1).Range("A1:C1").Copy DataSh.Range("A1")
    End If
    '--------------------
    k = 1 'データ集計シート
    
    On Error GoTo ErrHandler
    For i = 1 To .Worksheets.Count - k
      Application.ScreenUpdating = False
      With .Worksheets(i)
        j = DataSh.Cells(Rows.Count, 1).End(xlUp).Offset(1).Row
        If iHEAD = 0 And j = 2 Then j = 1
        n = .Cells(Rows.Count, 1).End(xlUp).Row
        If (j + n) < Rows.Count Then
          .Range(.Range("A1").Offset(iHEAD), .Cells(Rows.Count, 1).End(xlUp).Offset(, 2)).Copy _
          DataSh.Cells(j, 1)
        Else
          Err.Raise 513
        End If
      End With
      Application.ScreenUpdating = True
    Next

ErrHandler:
    If Err.Number = mErrNum Then
      Set DataSh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
      i = i - 1
      If iHEAD > 0 Then
        .Worksheets(1).Range("A1:C1").Copy DataSh.Range("A1")
      End If
      k = 2
      Resume Next
    ElseIf Err.Number > 0 Then
      MsgBox Err.Number & ": " & Err.Description
    End If
  End With
  Set DataSh = Nothing
End Sub

こんにちは。
既に回答は出ているようですが、こんな風にしたらどうでしょうか。

iHEAD オプションのタイトルというのは、

 住所  名前  電話番号

こうなっていることです。

すでに集計用のシートが決まっているなら、このようにします。
ただし、集計用のシートは、右端に追いやられます。

先頭に、(') をいれ、コメントブロックします。
  'Set DataSh = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))

コードのコメントブロックを外します。
 ''集計用のシートがすでに...続きを読む


このカテゴリの人気Q&Aランキング

おすすめ情報