[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『一番右にシートをコピーと一括コピー』(塩じぃ)
こんにちは。つたない説明で申し訳ないですが教えてください
マクロの中で今開いてる雛型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.