• 締切済み

Excelでブックを値保存したい

10のシートからなるブックがあるとします。 それぞれのシートには、関数やマクロが設定されています。 このブックを使って、すべての関数、マクロ計算が終了したあとで、結果のみのブックを作りたいのですが、どのようにすればよいでしょうか? ・元のブックには、関数、マクロを含むものとします。 ・最終的にほしいブックは  ・関数・マクロを含まない  ・罫線は元と同じ  ・印刷範囲、改ページや見出し、余白などの設定も元と同じ   よろしくお願いします。 ちなみにEXCELのバージョンは2010ですが、できれば2003でも使用可能にしたいです。

みんなの回答

  • 374649
  • ベストアンサー率38% (203/527)
回答No.5

>10のシートからなるブックがあるとします。 計算処理の必要な10Sheetsのブックから計算処理の終わった結果のみの10Sheetsのデータブックを作りたいということですか。 仮に元のブックをAとしてデータブックをBとすればAの処理が終わったらBをOPENして各シートのデータのみをBにコピーするマクロを組めばできるのでは。 逆の発想をすればBに転記しやすい書式でAの各シートを設計すれば良いと思います、他の人に書式を変更されたくないなら書式もマクロで組んでおけばよいのではないでしょうか。 希望する処理を整理してそれをマクロで組んでいけばよいので、質問者が書いたそのままを整理してプログラムを書いていけばよいと思います。

ryou4649
質問者

補足

やりたいことは、その通りです。 マクロ記録では、汎用性がなくなってしまいますよね。 例えば、8シートのものと10シートのものとか… VBマクロの文法に詳しくないので、for~nextを使うにしても、シート数をもってくる変数がわからなかったり… (下のNo2のkeithinさんの書き込みでようやくわかった程度なんです) やっぱりマクロを組まないと無理なんですね。 「値に変えて保存」みたいな方法があればいいのですか…

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.4

ん? どこをみているのですか? >これは、現在のブックをすべて値に書き換えるマクロですね。 いいえ,違いますよ。 判ったつもりになって,寄せられたアドバイスを試してみることもしていないって事ですね。 んじゃ,こうすれば安心しますか。先のマクロとナニも違いませんけど。 sub macro1()  dim i as long  thisworkbook.worksheets.copy  for i = 1 to activeworkbook.worksheets.count   worksheets(i).usedrange.value = worksheets(i).usedrange.value  next i end sub #まぁ,どんなマクロを含んでいるのか情報が足りてないよと指摘をしてもスルーですから,これも役に立つんだかさっぱり不明なんでフォローしがいが無いんですけどね。

ryou4649
質問者

補足

あれ?夕方に書き込んだのに反映されてない… 補足投稿後、すぐに別のファイルになってることに気がついたのですが、補足の追加が出来なかったので書き込めませんでした。すみません。m(_ _)m ただ、マクロ終了後に、ブックがかたまったような状態になってしまうため、2つのシートになってることがわかりにくかったんです。 今夜は帰りが遅くなってしまったので、明日、excel2003でもういちど試してみます。(職場の2010は最近使い始めたのでどうも使い方がわかりにくくて…) 「どんなマクロ」について、スルーしたわけじゃなくて、どう書けばいいのかわからなかったんです。 マクロは、標準モジュールに書いた普通のマクロと、シートに書き込んだ  Private Sub Worksheet_BeforeDoubleClick などのマクロがあります。

  • nobb_hero
  • ベストアンサー率45% (9/20)
回答No.3

手元にExcelが無いので概略だけになってしまいますが、、、 VBAで新規Book作成 シートの内容を新規Bookにコピー(たしかシートのコピーはシートモジュールも含めてコピーしたはずなので) という事を行えばできますね。 簡単な方法としてはマクロの記録を繰り返して、必要なところだけをつなぎ合わせる ですかね?

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.2

どんなマクロを含んでいるのですか? 標準モジュールやユーザーフォームなどだけなら: sub macro1()  dim i as long  thisworkbook.worksheets.copy  for i = 1 to thisworkbook.worksheets.count   worksheets(i).usedrange.value = worksheets(i).usedrange.value  next i end sub シートモジュールを含んでいるなら sub macro2()  dim i as long  dim w as workbook  worksheets.add  activesheet.move  activesheet.name = thisworkbook.worksheets(1).name  set w = activeworkbook  for i = 2 to thisworkbook.worksheets.count   w.worksheets.add after:=w.worksheets(i - 1)   w.worksheets(i).name = thisworkbook.worksheets(i).name  next i  for i = 1 to thisworkbook.worksheets.count   w.worksheets(i).name = thisworkbook.worksheets(i).name   thisworkbook.worksheets(i).cells.copy destination:=w.worksheets(i).range("A1")   w.worksheets(i).usedrange.value = w.worksheets(i).usedrange.value  next i end sub その他ページ設定など必要な範囲の内容を適切にコピーしてください。 「マクロを直接削除するマクロ」はそのまま「マクロウィルス」の手法につながるので,こちらのような一般の質問相談掲示板では回答は控えます。

ryou4649
質問者

補足

これは、現在のブックをすべて値に書き換えるマクロですね。 これだと、操作者が間違って元ファイルを書き換えてしまうおそれがあるので、元ファイルから新たに値のみのブックを別に育成したいのですが…

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

以下のような手順が簡単かもしれません。 1)そのファイルを別名で保存する。 2)各シートでCtrl+Aですべて選択し、Ctrl+Cでコピーし、右クリック「形式を選択して貼り付け」で「値」を選択する。 3)Alt+F11でVBEを起動し、Module1などを選択して、右クリックから「Module1の解放」でエクスポートを聞いてくるので「いいえ」を選択します(シートにマクロがある場合はそのシートを選択して右クリックからコードを表示して削除してください)。

ryou4649
質問者

補足

できれば、手順をマクロ化して、だれでも計算結果から、結果のみのブックを作れるようにしたいんです