初めて自分の家と他人の家が違う、と意識した時

エクセル 2003使用です。

エクセルのブック間におけるシートのコピーについてお願いします。

Book.Aのシート1の各セルは、関数の数式で入力(出力)されています。

このシートをコピーして、Book.Bにペーストしたいのですが、
コピーは、関数計算後の”結果の文字列”で行いたいです。

Book.Aのシート全体をコピーして
Book.Bのシートに「形式を選択して貼り付け」 → 「値」

で可能なのですが、シート数が多いので困っています。

Book.Aのシートタブを右クリックして「移動またはコピー」で
シートのコピーをすると、数式でコピーされてしまいます。
この方法で、値のみコピーのような方法はありませんでしょうか?

よろしくお願いします。

A 回答 (3件)

まず、入出力(マクロブックも)は全て同じフォルダだとして、


単純にマクロブックにコピーしてイイのか?
処理対象が複数(ファイル)あって、それぞれ別のブックに出力したいのか??
その場合は、ブック名を解決する必要がある。(予めシートに設定しておくとか)
それと、書式もイラナイ???

Option Explicit
Sub SmplestCopy()
Const xFrom = "FromA.xls"
Const xUnBelivableName = "The simplest way!!"
Const xKey_Col = 1 'キー列番号
Const xHeads = 1 '見出しの行数
Dim xSheet As Worksheet
Dim xPath As String
Dim xName As String
Dim xLast As Long
Dim kk As Long
Dim mm As Long
Dim nn As Long
On Error Resume Next
Debug.Print vbNewLine & Now & " :Now!"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Worksheets(1).Name = xUnBelivableName
xPath = (ThisWorkbook.Path & "\")
ChDrive (xPath)
ChDir (xPath)
If (ThisWorkbook.Name <> xFrom) Then
With Workbooks.Open(xPath & xFrom)
For Each xSheet In .Worksheets
xLast = xSheet.Cells(Rows.Count, xKey_Col).End(xlUp).Row
If (xLast > xHeads) Then
Else
MsgBox ("No Data Found!!")
End If
xName = xSheet.Name
With ThisWorkbook
.Worksheets(xName).Delete
.Worksheets.Add After:=.Worksheets(.Worksheets.Count)
.Worksheets(.Worksheets.Count).Name = xName
Application.CutCopyMode = False
xSheet.UsedRange.Copy
.Worksheets(.Worksheets.Count).Range("A1").PasteSpecial xlPasteValues
End With
Next
ThisWorkbook.Worksheets(xUnBelivableName).Delete
.Close (False)
End With
Else
MsgBox ("別のブックで実行してね!")
End If
Epilogue:
Set xSheet = Nothing
Application.CutCopyMode = False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
    • good
    • 1
この回答へのお礼

JazzCorp さま ありがとうございます。
返事が遅くなり申し訳ございまぜん。

コード貼り付けたらできました
ありがとうございました!

お礼日時:2013/05/01 10:07

シートタブで複製可能という事なので


「事前に用意されているシートに貼り付ける」
と、いう可能性は無いものと思いました。

で、困っている点としては
BookA側コピー対象シートが多すぎて手間だ。
と、言う事だと思います。

何のことはない作業グループを組んで
その状態で表に現れたシートの全セルを選んでコピー
BookBの先頭シートを選んで
形式を選んで値のみ、又は値と書式のみコピー
(※注:その他でも可)
これで複数シートが一括でコピーされますよ。

但し、
BookB側のシート数が少ない場合は保証外です (^_^;)


如何でしょうか?
お役に立てていたならば幸いです。

Excelの作業グループ
http://www.relief.jp/itnote/archives/000144.php

http://www.hello-pc.net/howto-excel/sagyougroup/
    • good
    • 0
この回答へのお礼

Nouble さま ありがとうございます。
返事が遅くなり申し訳ございません。

作業グループで、BookAで全範囲を選択し、
BookBでも同じシートの数だけ作業グループに指定しておくと
できました。

(先頭シートだけですと、領域が違うというエラーがでました)

先に同じBookBに同じ名前のシートを用意していればOKですね。

この方法は気づいていませんでした。

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

お礼日時:2013/05/01 10:05

VBAを利用して



1)Book.AをコピーしてBook.Bを作る。
2)Book.Bですべてのシートに対し3)以降をループ
3) 対象シートをコピーして自身に「形式を選択して貼り付け-値」

を作ったほうが早いと思います。
    • good
    • 0
この回答へのお礼

bin-chanさま 早速のご回答ありがとうございました。

やっぱり、VBAでやらないとダメですね。

B自身に「形式を選択して貼り付け-値」参考になりました。
ありがとうございました^^

お礼日時:2013/04/26 15:56

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


おすすめ情報