No.2ベストアンサー
- 回答日時:
こんにちは。
ブックA、ブックBを開いておく事が前提です。
Sub sample() 'ブックA...などは実際のBook名に修正が必要
Dim wb As Workbook 'Workbook型変数準備
Dim n As Long 'シート数用変数
Dim i As Long 'Loopカウンタ用
Set wb = Workbooks("ブックB.xls") 'ブックBを変数に格納
'WithやFor...NextステートメントはHelpで調べましょう
With Workbooks("ブックA.xls")
'シート数カウント
n = .Sheets.Count
'シート名格納用の変数
ReDim v(2 To n)
'2枚目からn枚目までのシートをLoop
For i = 2 To n
'変数にシート名を格納
v(i) = .Sheets(i).Name
Next i
'格納したシート名のSheetsをwbに移動
.Sheets(v).Move after:=wb.Sheets(wb.Sheets.Count)
End With
'SetしたObject型変数の後始末
Set wb = Nothing
End Sub
さっそくの回答ありがとうございます!!
やりたいこと、まさにそのものです><
みなさん、本当にすごいですね~~~
私も、このコードを、ただ貼り付けるだけでなく
自分のものに出来るように、頑張って勉強します!
またどうしても解らないことが出てきたら、ぜひ教えてください。
今回は、このコードを使用させていただきます。
本当にありがとうございました。
No.4
- 回答日時:
こんばんは。
以下は、VBAの勉強のためにはならないと思いますが、私なりの考え方で作ってみました。
これは、人間が手作業ですることを、VBAに置き換えてみました。つまり、1つずつシートを選択するのではなく、複数選択して、まとめて移動します。
なお、厳密に、Worksheet と Sheet は、指定するものが違ってきます。グラフシートなどがあると、それは、ワークシートではなくなってしまいますので、今回は、全て、Sheet という扱いにしました。
これは、以下の二つのブックとは関係のないブックに登録して、移動させることを目的にしたものです。標準モジュールが良いと思います。
'---------------------------------------------
Sub FileSheetCopy()
Dim Wb1 As Workbook
Dim Wb2 As Workbook
Dim i As Integer
'ユーザー設定
Const CBK1 As String = "BOOK_A.XLS" '移動元
Const CBK2 As String = "BOOK_B.XLS" '移動先
'エラートラップ
On Error GoTo ErrHandler
Set Wb1 = Workbooks(CBK1)
Set Wb2 = Workbooks(CBK2)
If Wb1.Sheets.Count = 1 Then MsgBox "移動元ブックのシートがひとつしかありません", vbInformation: Exit Sub
Wb1.Activate
'シートをまとめて選択
For i = 2 To Wb1.Sheets.Count
If i = 2 Then
Wb1.Sheets(i).Select
Else
Wb1.Sheets(i).Select False
End If
Next i
'選択したシートを移動
Wb1.Windows(1).SelectedSheets.Move after:=Wb2.Sheets(Wb2.Sheets.Count)
'エラー表示
ErrHandler:
If Err.Number > 0 Then
If Err.Number = 9 Then
MsgBox Err.Number & ": おそらくブックが開いていないと思います。", vbInformation
Else
MsgBox Err.Number & " : " & Err.Description
End If
End If
Set Wb1 = Nothing: Set Wb2 = Nothing
End Sub
さっそくの回答ありがとうございます!!
すごく丁寧なコードで感動しました。
メッセージボックスまでつけて頂いて!!!
また、WorkSheetとSheetの違いなど、なるほどーーー!!!です!
本当にありがとうございます!!
頑張って、このコードを自力で書けるように解読します!!!
本当にありがとうございました。
またどうしても解らないことがでてきたら、ぜひ教えてください!
No.3
- 回答日時:
No.1です。
コードを貼り付けるときに、
別な方を貼り付けたようです。
あまり変わらないけど、訂正します。
Sub Sample()
Dim wb1 As Workbook, wb2 As Workbook
Dim i As Integer
Set wb1 = Workbooks("ブックA.xls")
Set wb2 = Workbooks("ブックB.xls")
For i = wb1.Worksheets.Count To 2 Step -1
wb1.Worksheets(i).Move after:=wb2.Worksheets(wb2.Worksheets.Count)
Next
Set wb1 = Nothing
Set wb2 = Nothing
End Sub
再回答ありがとうございます!!
どこが違うのか、ぱっと見ではわかりません^^;
勉強させていただきます!!!
本当にありがとうございました。
またぜひよろしくお願いします!!
No.1
- 回答日時:
こんにちは。
ブックAのワークシートを後ろから順に
移動させるのがポイントでしょうか。
(前から移動させるとループが進んだ時に、
i番目のシートがなくなっているから)
後は特に難しいところは無いと思います。
Sub Sample()
Dim wb1 As Workbook, wb2 As Workbook
Dim i As Integer
Set wb1 = Workbooks("ブックA.xls")
Set wb2 = Workbooks("ブックB.xls")
For i = wb1.Worksheets.Count To 2 Step -1
Set sh = wb1.Worksheets(i)
sh.Move after:=wb2.Worksheets(wb2.Worksheets.Count)
Next
Set wb1 = Nothing
Set wb2 = Nothing
End Sub
この回答への補足
さっそくの回答、ありがとうございます!!
本当に勉強になります。
このコード、ただ貼り付けるだけでなく
読み取る勉強をして、自分のものに出来るように頑張りますね!!
またどうしても解らないことが出てきたら、ぜひ教えてください。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Excel(エクセル) 複数のExcelブックのシート1の内容を1つのExcelブックにコピー貼り付けたいのでvbaコードを 7 2023/02/10 23:20
- Excel(エクセル) 指定値をマクロで検索&シート移動 2 2022/04/27 23:29
- Visual Basic(VBA) Excel VBA シートを追加後に余分なシートを削除する、の意味 21 2022/05/19 22:46
- Excel(エクセル) 【マクロ】マクロが保存されているエクセルとは、別のエクセルブックの全シートの非表示列を再表示したい 1 2022/12/24 20:48
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel起動時に特定のワークシー...
-
エクセル 複数のブックを一度...
-
エクセルで抽出して別ファイル...
-
VBAでエクセルファイルを複数、...
-
VBAでブック保護非保護を判定す...
-
【困っています】VBA 追加処理...
-
エクセルで50行ごとに区切った...
-
vbaでpdfを開いて1ページ目のみ...
-
エクセルで参照しているデータ...
-
エクセルにおける,「ブック」...
-
指定ファィルの指定シートをシ...
-
Excelファイルを開いても何も表...
-
EXCELで複数のブックの特定のセ...
-
複数のセルをコピーし、別シー...
-
Excel(2010)のフィルターが保...
-
複数のExcelブックのシート1の...
-
【ExcelVBA】シートをそれぞれ...
-
【マクロ】【VBA】別ブックへの...
-
外部ブック参照が#REF!になって...
-
VBA:ワークブックを変数でActi...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの関数 ENTERを押...
-
VBAでブックを非表示で開いて処...
-
エクセルを共有するとPCによっ...
-
WorkBooksをオープンさせずにシ...
-
エクセルで参照しているデータ...
-
エクセルで「ディスクがいっぱ...
-
Excelでブックの共有を掛けると...
-
Excelで複数ブックの同一セルに...
-
Excel(2010)のフィルターが保...
-
エクセルで別ブックをバックグ...
-
エクセルにおける,「ブック」...
-
同じフォルダへのハイパーリン...
-
ブックのピボットを別ブックに...
-
エクセルファイルを開かずにpdf...
-
エクセル2016です。「ブッ...
-
ブックの保護ができないんです...
-
エクセルで50行ごとに区切った...
-
エクセルシートの一部を送りたい
-
フォルダ内の複数ファイルから...
-
エクセル 複数のブックを一度...
おすすめ情報