D:\データ1.xlsx (sheetは一つのみ。シート名:日販)
D:\データX.csv (sheetは一つのみ。シート名:POS積算)
がありまして、エクセルのテンプレート(集計用テンプレート.xlsx)を開いて作業するとします。
テンプレートのbookのシート2にデータ1
シート3にデータX
のデータを丸々コピーしたいです。シート名もそのままコピーします。
初心者の初心者で、さっぱりできません。。
シート2、シート3のデータを参照するセクションはなんとか出来たので、コピーする記述を教えていただけませんでしょうか。。。
Sub books_open()
Dim bookB As Worksheet, bookC As Worksheet
'対象ブックを開く
Set bookB = Workbooks.Open(ThisWorkbook.Path & "d:\データ1.xls")
Set bookC = Workbooks.Open(ThisWorkbook.Path & "d:\データX.csv")
'対象シートをa.xlsにコピー
bookB.Sheets("sheet1").Copy After:=ThisWorkbook.Sheets(2)
bookC.Sheets("sheet1").Copy After:=ThisWorkbook.Sheets(3)
'シート名変更
With ThisWorkbook
.Sheets(2).Name = "日販"
.Sheets(3).Name = "POS積算"
End With
'対象ブックを閉じる
bookB.Close
bookC.Close
End Sub
コピーが終わったら、作業用テンプレのシート1の5行目に、各列にフィルターを付けるところまでしたいと考えています。。
環境;Windows7 64bit office2010または2013
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
勘違いが、3点あるように思われます。
まず、1点目ですが、WorkBookとWorkSheetの区別を理解していますか?
今回、BookAが追加になってようですが、これはWorkBookですよね?それに対して、BookBはWorkSheetです。同じような名前を付けてしまったので、分かりずらくなっていると思われます。
2点目です。テンプレートを開いた場合、そのブック名はテンプレートと同じ名前にはなりません。たぶん、後ろに数字が付きます。よって、Workbooks("テスト.xltx")のようにテンプレート名で操作しようとしても「見つからない」みたいなエラーになると思います。
上記のことを踏まえ、今からでも直せるのであれば、次のようにしてみたらいかがでしょうか。
Dim wbA As Workbook, wsB As Worksheet, wsC As Worksheet
'対象ブックを開く
Set wbA = Workbooks.Open("D:\テスト.xltx")
Set wsB = Workbooks.Open("D:\データA.xlsx").ActiveSheet
Set wsC = Workbooks.Open("D:\データX.csv").ActiveSheet
'対象シートをテスト.xltxにコピーしシート名を変更する
wsB.Copy After:=wbA.Sheets(1)
3点目ですが、WorkSheet.CopyメソッドのAfterパラメータの意味を勘違いされているようです。
bookB.Copy After:=ThisWorkbook.Sheets(1) と書いた場合、Sheets(1)の後ろにコピーされます。Sheets(1)自体が書き換わるわけではありません。
ちなみに、bookB.Copy After:=ThisWorkbook.Sheets(2)と書いた場合、Sheets(2)の後ろにコピーされます。当然ですが、Sheets(2)がない場合は、エラーとなります。
上記のことを念頭に、プログラムコードを見直してみてください。ご検討をお祈りします。
おはようございます。詳細な回答有り難うございます。勘違いを含め修正し、無事にできましたm(_ _)mシート丸々が追加されるので、deleteを使って、シート数を整えました!ご教授いただき大変助かりましたm(_ _)m
No.2
- 回答日時:
おはようございます。
ママチャリです。D:\の直下であれば、「ThisWorkbook.Path &」は不要なので、こうですね。
Set bookB = Workbooks.Open("D:\データ1.xls").ActiveSheet
おはようございます、早速の補足ありがとうございます!なるほどですね、なので、xlsxstartの場所に参照しに行っていたんですね!後程試してみます!!迅速な補足に感謝いたしますm(_ _)m
No.1
- 回答日時:
こんな感じです。
ちなみに、bookB 、bookC はワークシートなので、この変数名は、おかしいですね。
Sub books_open()
Dim bookB As Worksheet, bookC As Worksheet
'対象ブックを開く
Set bookB = Workbooks.Open(ThisWorkbook.Path & "\データ1.xls").ActiveSheet
Set bookC = Workbooks.Open(ThisWorkbook.Path & "\データX.csv").ActiveSheet
'対象シートをa.xlsにコピー&シート名変更
bookB.Copy After:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = "日販"
bookC.Copy After:=ThisWorkbook.Sheets(1)
ActiveSheet.Name = "POS積算"
'対象ブックを閉じる
bookB.Parent.Close
bookC.Parent.Close
End Sub
おはようございます。さっそくの回答ありがとうございます。 エラー1004が出てしまいました。保存先を参照するためのパスの記述だと思うのですが、
Set bookB = Workbooks.Open(ThisWorkbook.Path & "\データ1.xls").ActiveSheetのところの指定について教えていただけませんでしょうか。保存先はD:\の直下に保管されています。。。Set bookB = Workbooks.Open(ThisWorkbook.Path & "D:\データ1.xls").ActiveSheet ではございませんでしょうか・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
重複するidをデータごとにまと...
-
エクセルVBA Ifでシート名が合...
-
エクセルVBA 変数への代入がう...
-
【ExcelVBA】全シートのセルの...
-
エクセルVBAで次の様にデーター...
-
同じ作業を複数のシートに実行...
-
VBA オートフィルター繰り返し
-
VBAで同じシート名のコピー時は...
-
別のシートから値を取得するとき
-
エクセルのシート名変更で重複...
-
エクセルのマクロでアクティブ...
-
VBA ユーザーフォーム上のチェ...
-
【エクセル】オプションボタン...
-
Worksheet_Changeの内容を標準...
-
別のシートを参照して計算する方法
-
Excel VBA で自然対数の関数Ln...
-
Excel VBA 複数行を数の分だけ...
-
Excel VBAシートの色を一気に変...
-
Excel VBA 文字列のセルを反映...
-
VBA 入力月で該当シートを選択...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
excelのマクロで該当処理できな...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
別のシートから値を取得するとき
-
ブック名、シート名を他のモジ...
-
実行時エラー'1004': WorkSheet...
-
Excelマクロのエラーを解決した...
-
XL:BeforeDoubleClickが動かない
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
実行時エラー1004「Select メソ...
-
VBAで同じシート名のコピー時は...
-
エクセルで通し番号を入れてチ...
-
同じ作業を複数のシートに実行...
-
Excel VBA リンク先をシート...
-
ExcelのVBAのマクロで他のシー...
-
Vba UserformからExcelシートの...
-
【Excel VBA】Worksheets().Act...
-
VBA 存在しないシートを選...
おすすめ情報
試してみました。エラー1004で bookB.Copy After:=ThisWorkbook.Sheets(1) の行が黄色くなりました。最初のところで、 Sheets.Add After:=Worksheets(3)など必要でしょうか? とまっている状況は、シート1にデータAがコピーされてとまります。シートは他には無くデータAのシートのみです。。
Sub books open()
Dim bookA As Worksheet, bookB As Worksheet, bookC As Worksheet
'対象ブックを開く
Set bookA = Workbooks.Open("D:\テスト.xltx").ActiveSheet
Set bookB = Workbooks.Open("D:\データA.xlsx").ActiveSheet
Set bookC = Workbooks.Open("D:\データX.csv").ActiveSheet
'対象シートをテスト.xltxにコピーしシート名を変更する
bookB.ActiveSheet.Copy After:=Workbooks("テスト.xltx").Sheets(2)
ActiveSheet.Name = "データA"
テスト.xltxのシート2にコピーしたいのですが、、