Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


906 / 13644 ツリー ←次へ | 前へ→

【77613】他のブックへのシートコピー のんぼ 15/11/8(日) 11:00 質問[未読]
【77614】Re:他のブックへのシートコピー γ 15/11/8(日) 11:11 発言[未読]
【77615】Re:他のブックへのシートコピー マナ 15/11/8(日) 14:13 発言[未読]
【77620】Re:他のブックへのシートコピー のんぼ 15/11/10(火) 20:24 お礼[未読]

【77613】他のブックへのシートコピー
質問  のんぼ  - 15/11/8(日) 11:00 -

引用なし
パスワード
   VBA初心者です。
Aのブック(マクロ)から、
Dim vntfilename As Variant
  vntfilename = _
    Application.GetOpenFilename( _
    filefilter:="エクセルファイル(*.xlsx),*.xlsx" & _
Bのブックを取得して、
  Dim ws As Worksheet
  ActiveSheet.UsedRange.Select
   Next Sht
   Worksheets.Add after:=Worksheets(1)
   ActiveSheet.Name = "追加"
シートを追加します。
Aのブック(Shet2)をBのブック(追加シート)にコピーしたいのですがうまくいきません。試した構文
Dim ws As Worksheet
  Set ws = Worksheets("sheet2")
  Worksheets("sheet2").Range("a1:l21").Copy
  Worksheets("追加").Range("a1").PasteSpecial Paste:=xlPasteA
エラーが発生します。
どなたかご教授願います。

【77614】Re:他のブックへのシートコピー
発言  γ  - 15/11/8(日) 11:11 -

引用なし
パスワード
   ブック ー シート ー セル範囲 という階層構造を
理解されるとよいでしょう。
途中のシート以下を指定した場合、
アクティブなブックが対象となります。
そのことを念頭に置いて下さい。

新たに質問を建てていますが、
前のスレッドは放置なんですか?
折角コメントを寄せて下さったかたに失礼では?
>VBA初心者です。
いくらVBA初心者でもそれは関係ありません。
マナーは守りましょうよ。

また、質問にあたっては、コードの部分を恣意的に取り出すのではなく、
できるだけ全体を示した方がよいと思いますよ。

【77615】Re:他のブックへのシートコピー
発言  マナ  - 15/11/8(日) 14:13 -

引用なし
パスワード
   ▼のんぼ さん:

1)複数シート、複数ブックを扱う場合は、どのブックの、どのシートを操作したいかわかるように、ブック、シート指定する
2)Aのブック(マクロを書いてあるブック)は、ThisWorkbookで指定可能
3)Bのブックは、開いた時に変数にセットしておくと、ブックの指定に使える
4)新規シートを追加して、そこにすべてのデータをコピーするなら、最初からシートのコピーだけでよいです

例えばこんな感じ

Sub test2()
  Dim vntfilename As Variant
  Dim wb As Workbook
  
  vntfilename = Application.GetOpenFilename( _
    filefilter:="エクセルファイル(*.xlsx),*.xlsx")
  If vntfilename = False Then Exit Sub
  
  Set wb = Workbooks.Open(vntfilename)

  ThisWorkbook.Worksheets("Sheet2").Copy after:=wb.Worksheets(1)
  
End Sub

【77620】Re:他のブックへのシートコピー
お礼  のんぼ E-MAIL  - 15/11/10(火) 20:24 -

引用なし
パスワード
   ▼マナ さん:
>▼のんぼ さん:
>
>1)複数シート、複数ブックを扱う場合は、どのブックの、どのシートを操作したいかわかるように、ブック、シート指定する
>2)Aのブック(マクロを書いてあるブック)は、ThisWorkbookで指定可能
>3)Bのブックは、開いた時に変数にセットしておくと、ブックの指定に使える
>4)新規シートを追加して、そこにすべてのデータをコピーするなら、最初からシートのコピーだけでよいです
>
>例えばこんな感じ
>
>Sub test2()
>  Dim vntfilename As Variant
>  Dim wb As Workbook
>  
>  vntfilename = Application.GetOpenFilename( _
>    filefilter:="エクセルファイル(*.xlsx),*.xlsx")
>  If vntfilename = False Then Exit Sub
>  
>  Set wb = Workbooks.Open(vntfilename)
>
>  ThisWorkbook.Worksheets("Sheet2").Copy after:=wb.Worksheets(1)
>  
>End Sub
大変わかりやすいご返答いただきまして、ありがとうございました。
構文をためしましたら、できました。マクロブックの表示の仕方など大変勉強になりました。本当にありがとうございました。

906 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free