- 締切済み
新たなワークシートへのコピペVBA
(1)Excelの一つのBOOKの中に複数のワークシートがあります。 (2)これらワークシートの中から、任意でいくつかのみを選びます。 (3)新たなワークシートを一つ作り、ここに、(2)で選んだワークシートを順番に横並びでコペピする。 上記をVBAで自動化させるには、どうしたらよろしいのですか?
- plana
- お礼率24% (21/85)
- Excel(エクセル)
- 回答数1
- ありがとう数0
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- cj_mover
- ベストアンサー率76% (292/381)
こんにちは。 下記コードを当該ブックの標準モジュールに貼り付けてから、 Sub CrPickUpSh8318367()を実行。 後は指示通りに、 【任意】のシートを選択して、 実行ボタンを押し、 シート名を指定するだけ。 シーケンシャルなUI形式です。 #【任意】という言葉、の意味が合っている前提でお応えしています。 ' ' ================================= Sub CrPickUpSh8318367() ' プロシージャ名は自由の変更可。 Dim oWshts As Worksheets Dim tnWsht As Long Dim i As Long With Worksheets tnWsht = .Count With .Add(After:=.Item(tnWsht)) .Name = "PickUpSheets" For i = 1 To tnWsht With .OLEObjects.Add(ClassType:="Forms.CheckBox.1", Left:=1, Top:=Cells(i, 1).Top, Width:=100, Height:=18) .Object.Caption = Worksheets(i).Name End With With .Buttons.Add(144, 0, 72, 72) .OnAction = "ShMerge" .Caption = "シートの結合/実行" End With Next i End With End With MsgBox "結合させたいシート名にチェックを入れて、実行ボタン。", , "シートの結合/シート選択" End Sub ' ' ================================= Private Sub ShMerge() ' プロシージャ名は変更不可。 Dim arrShName() As String Dim oOle As OLEObject Dim oShape As Shape Dim sBuf As String Dim sName As String Dim nPrCol As Long Dim i As Long With Sheets("PickUpSheets") For Each oOle In .OLEObjects If TypeName(oOle.Object) = "CheckBox" Then If oOle.Object.Value = True Then sBuf = sBuf & vbLf & oOle.Object.Caption End If Next If sBuf = "" Then MsgBox "結合するシートが選択されていません。", , "シートの結合/シート選択" Exit Sub End If For Each oShape In .Shapes oShape.Delete Next arrShName() = Split(sBuf, vbLf) For i = 1 To UBound(arrShName()) With .UsedRange nPrCol = .Cells(.Cells.Count).Column + 1 End With Worksheets(arrShName(i)).UsedRange.Copy _ Destination:=.Cells(nPrCol) Next i Do sName = Application.InputBox(Prompt:="シートの結合/完了" & vbLf & "シート名を指定", _ Title:="シートの結合/シート名を指定", _ Default:="結合Sheet", Type:=2) Select Case sName Case "", "False" Case Else .Name = sName Exit Do End Select Loop End With End Sub ' ' =================================
関連するQ&A
- EXCEL VBA ワークシートのコピーについて
seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元 MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに ワークシート名 ワークシート1 処理1ワークシート ワークシート2 処理2ワークシート ワークシート3 処理3コピー元ワークシート3 という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- EXCEL VBA ワークシートのコピーについて
seaclearsky8です。 一つのブックに何枚ものワークシートを追加して保存するVBAについて ご教授、よろしくお願いします。 コピー元 MASTER Book MASTER Workseets コピー先 Copy Book copy Worksheets コピー元にはワークシートがMASTERワークシートの一枚しかありません。 その一枚のワークシートに値をVBAで入れていき処理し コピー先のコピーBOOKにワークシートをコピーしていきたいです。 しかし、MASTERBOOKの処理が何通りかあり、 コピー元の一枚のワークシートに 処理別にデータを写し コピー先BOOKに ワークシート名 ワークシート1 処理1ワークシート ワークシート2 処理2ワークシート ワークシート3 処理3ワークシート という具合にワークシートを複数コピーしたいのですが 処理ごとにデータを代入し、コピー処理はできるのですが。 コピー先BOOK ワークシート3 処理3ワークシート だけしかコピーされてないBOOKが作成されます。 上書きされているのだと思われます。 対処法が調べましたが見つけられていません。 すいませんが対処法及び参考VBA等ご教授宜しくお願いいたします。
- ベストアンサー
- その他(プログラミング・開発)
- VBAでブック内のワークシートを名前をつけて保存
エクセルVBAで作業中のブックの一部のワークシート(2枚)を名前をつけて保存する方法を教えてください。 (例) 《ブックA》 sheet1 sheet2 sheet3 10/5 10個 10,000円 4個 25,000円 東京 25個 18,500円 6個 42,000円 というブックから『10/5 東京』というブックでsheet2,sheet3の内容を 保存したいのですが・・・ VBAは勉強し始めでほとんどわからないので教えてください。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同
エクセルVBAの処理でブックの中に複数のシートがあり、そのシート名と同じ名前の他のブックにそのシートを順々に挿入していきたいのですがどうすればよいのでしょうか。 宜しくお願い致します。
- 締切済み
- SE・インフラ・Webエンジニア
- エクセル ワークシート操作
エクセル VBAにてブックを閉じるときに作業をして追加した ワークシートを昇順、もしくは降順(名前、日付など)に 並び替えてから閉じるように する方法がわからないのですが? どのようにやるのでしょうか?
- 締切済み
- その他(プログラミング・開発)
- エクセル 一つのワークシートだけプログラムを無効にしたい
こんにちは。 エクセルVBA初心者です。 ブックの複数のワークシートにVBAでプログラムを書いています。 Sheet1のモジュールにマクロ1~4 sheet2のモジュールにマクロ5~7 と言った具合です。 Sheet2で作業するのにプログラムが動作すると邪魔なので、Sheet2のプログラムだけを一時的に無効にしておきたいと思ってます。 このときの条件(というか希望)として、 ・マクロはまた使うので消さない ・Sheet1のマクロはSheet2の確認作業で使うのでそのまま使えるようにしておきたい ・有効/無効を簡単に切り替えたい があるのですが、このような要望をかなえる方法を教えて下さい。 尚、OSはWin2000、エクセルは97です。 よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBA ワークシート操作について
エクセル2000 VBAで ワークシートが左から順番に 入力フォーム⇒加工費単価マスタ⇒出荷日報(原紙)と 3個あり4個目に出荷日報(原紙)をコピーしたワークシートを 入力して⇒テキストボックス1 (日付入力します出来れば、日付入力の指定方法⇒テキストボックスの入力制限方法も教えていただきたいです)に入力した名前を ワークシートに付けて保存したいのですが? 翌日は また左から4番目の位置にコピーされ 右に行くほど古い日付の順番にしたいです。 説明が不足していましたら連絡お願いします。
- ベストアンサー
- その他(プログラミング・開発)
- EXCEL VBA ワークシート貼り付け
EXCEL2000のVBAを使用して 元データーの左から5番目のワークシートをコピーして 同じフォルダー内にあるエクセルデーター(10個)の 一番左に貼り付けたいのですがVBAの処理で出来ますでしょうか? 実施する処理は元データーの左から5番目のワークシートを コピーして貼り付けたいデーターを開いて 開いたデーターを移動先ブック名に指定して一番左に元データーの 左から5番目のデーターを貼り付けて 処理が終了したら移動先ブックを閉じて次のデーターも 同じことを行いフォルダー内のデーター全てに同じ処理を 行ったら終了する? 文面だけの説明で大変申し訳ないのですがご教授していただけないでしょうか?
- ベストアンサー
- オフィス系ソフト
- はじめに表示するワークシート
Excel2000の質問です。 あるExcelのブックに30個程度のワークシートを作成しているとします。 その30個あるワークシートの中から、ブックを開いたときにはじめに表示させるワークシートを指定するにはどうすればいいのでしょうか。 Outlook2000でいえば、[起動時のフォルダの指定]のようなものです。 どなたかご教授願います。
- ベストアンサー
- オフィス系ソフト
- エクセルのワークシート
エクセルのワークシート エクセルのブックを開いたときに、シートが3枚あったら そのまま開いて、 3枚なかったら1枚追加する、ということをしたいのですが どのようにすればよいか、教えていただけないでしょうか。
- ベストアンサー
- オフィス系ソフト