質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

2360閲覧

エクセルのマクロで困ってます。シートの内容をコピーして新しいシートにそのままの形で貼り付けたい

sugerShogo

総合スコア18

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コピー

元のオブジェクトを破壊することなく、オブジェクトの複製を生成することをコピーと呼びます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/08/21 07:45

編集2020/08/21 09:51

ネットで拾ったマクロをなんとなく自分で直して使ってたのですが、"基礎"のシートを丸ごとコピーしてコピーしたものを新しいシートに張りつける際に書式設定(セルの大きさ)が変わってしまうので、基礎のままコピペしたいです
やったことはRange("A1:J461").Copyの部分をcells.select.copyに変えたのですが、ダメでした

With Worksheets.Add()
.Name = Sheets("顧客管理").Range("D1")
.Move After:=Worksheets(Worksheets.Count)
End With

Worksheets("基礎").Range("A1:J461").Copy Worksheets(Worksheets.Count).Range("A1")
Columns("B:B").EntireColumn.AutoFit

With Worksheets("顧客管理").Activate
Dim LastRow As Long
LastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(LastRow, 1) = (Range("D1"))
End With

自分はここを直すとおもうのですが、直し方が分かりません
......................................↓ここの変え方(シート全体に指定)
Worksheets("基礎").Range("A1:J461").Copy Worksheets(Worksheets.Count).Range("A1")
↓この部分はいらないと思います...。
Columns("B:B").EntireColumn.AutoFit

...................................................................
ABCDEF
1
2
3
4

A左1の上にあるボタンを押してすべて選択してコピーしてペーストするとそのままの形(セルの大きさなど)で表示されるのでそうしたいです。
今のマクロだと初期のセルの大きさに戻ってしまいます
もちろん違うコピーの選択でも構いません(自分がこのやり方しか知らないので)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/08/21 07:57

”シート自体のコピー”じゃ駄目なんですか?
sugerShogo

2020/08/21 09:25

シート自体のコピーをしたらシート名はどうなりますか? .Name = Sheets("顧客管理").Range("D1")のままのシート名でもペーストできますか?
meg_

2020/08/21 11:13

> シート自体のコピーをしたらシート名はどうなりますか? どうなるかはご自身でやって確かめるのが一番かと思います。 > .Name = Sheets("顧客管理").Range("D1")のままのシート名でもペーストできますか? シート名はコピー後に変更すれば良いんじゃないでしょうか?
guest

回答3

0

ベストアンサー

エクセルは、
列の幅は列に、行の幅は行に依存している(同じ列の個々のセルでセル幅が違うということはあり得ない)ので、列幅を維持したいなら列全体を、行高を維持したいなら行全体をコピーする必要があります。
両方ならシートそのものをコピーするか、
個々に行や列を設定するしかないかと思います。


追記

セル全体をコピーしてもいいんですね。
目から鱗です。

手動では操作したいものは、選択してエクセルに伝えますが、
VBAでは、操作したいものを文章で指示しますので、
選択したりアクティブにしたりの命令の記述は、不要です。
というか無駄な操作です。

ExcelVBA

1Sub test1() 2 Dim wshTemplate As Worksheet '雛形シート 3 Dim wshNew As Worksheet '新しく作るシート 4 Dim strName As String 'シート名 5 6 '準備(前提条件の整理) 7 strName = Worksheets("顧客管理").Range("D1").Value 8 With Worksheets 9 Set wshTemplate = .Item("基礎") 10 Set wshNew = .Add(after:=.Item(.Count)) 11 End With 12 13 '転記&追記 14 With wshNew 15 wshTemplate.Cells.Copy .Cells 16 .Name = strName 17 With .UsedRange 18 .Cells(.Rows.Count + 1, 1).Value = strName 19 End With 20 End With 21End Sub

ただ、
1)新しいシートを作成
2)雛形シートのセルをコピペ
だと作業が2工程になりますが、

1)雛形シートをコピー

の1工程でも同じ結果になりませんか?
シート名を変えるのは同じですし。

ExcelVBA

1Sub test2() 2 Dim s As String 3 Dim ix As Long 4 5 With Worksheets 6 s = .Item("顧客管理").Range("D1").Value 7 ix = .Count 8 .Item("基礎").Copy after:=.Item(ix) '←シートを丸ごとコピー 9 With .Item(ix + 1) 10 .Name = s 11 .Cells(.Rows.Count, 1).End(xlUp).Offset(1).Value = s 12 End With 13 End With 14End Sub

解説が必要な部分があれば、聞いてください。

投稿2020/08/21 09:07

編集2020/08/22 00:32
mattuwan

総合スコア2136

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sugerShogo

2020/08/21 09:29

基礎シートそのものをコピーして新シートにペーストしたいです シート名は基礎ではなくName = Sheets("顧客管理").Range("D1")を使用して それのマクロの組み方が分かりません
guest

0

新しいシートを挿入して、そのまま”基礎”シートの内容を貼り付けるとすると以下の内容になると思います。

VBA

1 Worksheets.Add After:=Worksheets(Worksheets.Count) 2 Sheets("基礎").Cells.Copy 3 Sheets(Worksheets.Count).PasteSpecial 4 Application.CutCopyMode = False

投稿2020/08/21 23:18

Taka1108

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

マクロの記録で 試してみました

VBA

1Sub Macro1() 2' 3 Cells.Select 4 Range("A3564").Activate 5 Application.CutCopyMode = False 6 Selection.Copy 7 Sheets("Sheet1").Select 8 Cells.Select 9 Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _ 10 , SkipBlanks:=False, Transpose:=False 11 12End Sub

投稿2020/08/21 10:11

Reach

総合スコア733

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問