プロが教えるわが家の防犯対策術!

コピー元のシートが複数のセルや図を参照していて、
新しいシートにコピーしたいです。
その際、図を画像、参照している値を値に変換してコピーする方法が知りたいです。

セルの位置や画像はそのままの位置にしたいです。
※その後エクセルファイルで保存したい。


↓試してみたコードです。

Sub MakeNewFile()

' 新しいExcelファイルを作成
Dim NewFile As Workbook
Set NewFile = Workbooks.Add

' OriginalFileのシートを指定
Dim OriginalFile As Worksheet
Set OriginalFile = ThisWorkbook.Sheets("test")

' TargetFileのシートを指定
Dim TargetFile As Worksheet
Set TargetFile = NewFile.Sheets(1)

' シートをコピー
OriginalFile.Copy Before:=TargetFile

' 新しいファイルを保存(ファイルパスを変更してください)
NewFile.SaveAs "C:\********新しいファイル名.xlsx"

' 新しいファイルを閉じる(保存する場合はコメントアウトを外してください)
' NewFile.Close
End Sub

「VBAで新しいエクセルファイルにシートを」の質問画像

A 回答 (1件)

こんにちは



添付なさった画像はほとんど識別できないので、ご質問の文章のみからの回答になりますが・・・

>その際、図を画像、参照している値を値に変換してコピーする方法が知りたいです。
ご提示の方法で、セルのサイズや書式はコピーできていると思います。
「参照している値を値に変換してコピーする」というのは関数式等が設定されているセルの値を全て固定値に変えるということと解釈しました。
こちらは簡単で、各セルの「値を代入」することで実現できます。
シート全体をまとめて行うなら、
 コピー先シート.Cells.Value = コピー元シート.Cells.Value
の一文で処理できます。


「図を画像にする」のは、全ての図なのか一部の図なのかによって異なりますが、こちらはまとめて処理はできませんので、各図形(=Shape)を順に処理することになります。
以下は、仮に全部の図形を画像にして再コピーするとして・・
1)コピー先シートの図形を一旦全て削除します
2)コピー元のシートの図形(コピー元シート.Shapes)について順にループ
 2-1)対象Shape.CopyPicture
   で、図形を画像化できますので、これをコピー先にペースト
 2-2)コピー元の図形位置に合わせて、ペーストした画像を配置
   (.Left、.Topを設定すれば良いです)
とすることで可能と思います。

※ 画像化されるので、テキストボックス等も編集できなくなりますのでご注意。
※ 画像化するものとしたくないものが存在する場合は、条件分岐などで処理を分ければよいでしょう。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A