[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一番右にシートをコピーと一括コピー』(塩じぃ)
こんにちは。つたない説明で申し訳ないですが教えてください
マクロの中で今開いてる雛型1というシートの中に
Activesheet.copyのコマンドボタンを作って
新しいブックにコピーしていたのですが
何回もコピーして後でコピーしたブック内のシートをまとめる
という手間があります。
?@今開いているシートをコピーするとブック内の一番右にコピーが
作成される
?A指定したシート以外は新しいブックにまとめてコピーする
(自分の環境だと雛型1と雛型2のシート以外を新しいブックにコピー)
の2つのプロシージャを教えていただけないでしょうか。
現状は分裂しまくったブックを後でシートの移動やコピーでまとめています。
すみませんがよろしくお願いします。
< 使用 Excel:Excel2016、使用 OS:Windows7 >
(1) ActiveSheetをブック末尾にコピー挿入する方法法
(2) (どうやって"指定"するのかは別問題ですが)ブックの指定したシートを 新規ブックにコピーする
の2つが知りたいということでしょうか?
その場合、
>Activesheet.copyのコマンドボタンを作って新しいブックにコピーしていた
とおっしゃっているので、まったくの手つかずではないとおもうので、どんなコードを書いていてどこが思う通りになってないのか、教えていただくとアドバイスできる部分があるかもしれません。
(もこな2 ) 2020/05/25(月) 13:31
はい、2つのプロシージャを教えていただけたらと思います。
現在は
Sub コピー
Dim Tmp as String Tmp = "雛型1"
Sheets(Tmp).Select
ActiveSheet.copy ActiveSheet.Name = ActiveSseet.Range("A2")
Msgbox"雛型に戻ってください",vbokonly,"コピー完了" End Sub
だけにしてシート名を取得しています。
1日、2日、3日、とコピーしていくのですがブックがどんどん増えてしまうので
新しいブックを増やさずに右に増やしていって
最後に別のコマンドボタンで一括出力
みたいに作りたいです。
(塩じぃ) 2020/05/25(月) 15:39
Sub コピー_改() With ThisWorkbook.Worksheets("雛形1") .Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count).Name = .Range("A2") .Activate MsgBox "コピー完了" End With End Sub
(もこな2 ) 2020/05/25(月) 16:32
はたまた、雛形1、雛形2以外は全部対象とか
(もこな2 ) 2020/05/25(月) 20:05
2つめの希望については細かい規則性はなく、自分の環境で言うと
雛形1、雛形2、リスト というシート以外は全部対象にして
別ブックにコピーできれば非常にありがたいです。
この2つが揃えば作業性が数倍になる・・・
教えて頂ければありがたいです。すみません聞いてばかりで。
(塩じぃ) 2020/05/25(月) 20:13
Sub さんぷる() Dim tmp As Variant
ThisWorkbook.Worksheets.Copy
Application.DisplayAlerts = False On Error Resume Next For Each tmp In Array("雛形1", "雛形2", "リスト") Workbooks(Workbooks.Count).Worksheets(tmp).Delete Next tmp On Error GoTo 0 Application.DisplayAlerts = False
End Sub
(もこな2 ) 2020/05/25(月) 21:52
↓をステップ実行して確認してみてください。
Sub 一括移動() Dim MySTR As String Dim SH As Worksheet
Stop 'ブレークポイントのかわり
'▼対象のシートを文字列で覚える For Each SH In ThisWorkbook.Worksheets Select Case SH.Name Case Is = "雛形1", "雛形2", "リスト" '何もしない Case Else MySTR = MySTR & SH.Name & "," End Select Next SH
'▼覚えたシート名があったら処理する If MySTR <> "" Then MySTR = Left(MySTR, Len(MySTR) - 1) ThisWorkbook.Worksheets(Split(MySTR, ",")).Move End If
End Sub
(もこな2 ) 2020/05/26(火) 12:12
何というか上から目線の様な言い回しですみませんが
100点満点目指してたら200点になるプロシージャを教えて頂き
ありがとうございました。
感無量です!!元データもリセットしてくれるのありがたすぎです!
(塩じぃ) 2020/05/26(火) 13:05
ちなみに、当初想定されていたのは↓のような動きじゃないでしょうか?
(実行するまえにマクロブックのほうを一度保存してください)
Sub さんぷる() Dim dstWB As Workbook
On Error Resume Next Set dstWB = Workbooks("出力.xlsx") On Error GoTo 0 With ThisWorkbook.Worksheets("雛形1") If dstWB Is Nothing Then .Copy Set dstWB = Workbooks(Workbooks.Count) dstWB.Worksheets(1).Name = .Range("A2").Value dstWB.SaveAs ThisWorkbook.Path & "\出力" Else .Copy after:=dstWB.Worksheets(dstWB.Worksheets.Count) dstWB.Worksheets(dstWB.Worksheets.Count).Name = .Range("A2").Value End If
.Parent.Activate .Activate
End With End Sub
(もこな2 ) 2020/05/27(水) 02:16
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.