- ベストアンサー
エクセルのブック間で値のみコピー
- エクセル2003を使用して、ブック間で値のみをコピーする方法についてお伺いします。
- Book.Aのシート1には関数の数式で入力されているため、関数計算後の結果の文字列をコピーしたいです。
- シート全体をコピーして「形式を選択して貼り付け」→「値」でできますが、シート数が多くて困っています。値のみをコピーする方法はありますか?
- みんなの回答 (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
その他の回答 (2)
- Nouble
- ベストアンサー率18% (330/1783)
シートタブで複製可能という事なので 「事前に用意されているシートに貼り付ける」 と、いう可能性は無いものと思いました。 で、困っている点としては BookA側コピー対象シートが多すぎて手間だ。 と、言う事だと思います。 何のことはない作業グループを組んで その状態で表に現れたシートの全セルを選んでコピー BookBの先頭シートを選んで 形式を選んで値のみ、又は値と書式のみコピー (※注:その他でも可) これで複数シートが一括でコピーされますよ。 但し、 BookB側のシート数が少ない場合は保証外です (^_^;) 如何でしょうか? お役に立てていたならば幸いです。 Excelの作業グループ http://www.relief.jp/itnote/archives/000144.php http://www.hello-pc.net/howto-excel/sagyougroup/
お礼
Nouble さま ありがとうございます。 返事が遅くなり申し訳ございません。 作業グループで、BookAで全範囲を選択し、 BookBでも同じシートの数だけ作業グループに指定しておくと できました。 (先頭シートだけですと、領域が違うというエラーがでました) 先に同じBookBに同じ名前のシートを用意していればOKですね。 この方法は気づいていませんでした。 ありがとうございました。
- bin-chan
- ベストアンサー率33% (1403/4213)
VBAを利用して 1)Book.AをコピーしてBook.Bを作る。 2)Book.Bですべてのシートに対し3)以降をループ 3) 対象シートをコピーして自身に「形式を選択して貼り付け-値」 を作ったほうが早いと思います。
お礼
bin-chanさま 早速のご回答ありがとうございました。 やっぱり、VBAでやらないとダメですね。 B自身に「形式を選択して貼り付け-値」参考になりました。 ありがとうございました^^
お礼
JazzCorp さま ありがとうございます。 返事が遅くなり申し訳ございまぜん。 コード貼り付けたらできました ありがとうございました!