ここから本文です

VBA 別のブックのシートにデータをコピーしたいのですが、コードがわからないので...

yukiokashi0709さん

2013/6/2616:06:53

VBA 別のブックのシートにデータをコピーしたいのですが、コードがわからないのでご教授ください。

具体的には以下の順序でコードを組みたいです。
①コピー元のシートからマクロにて別のブックを新規作成させて別シートをコピーする。
②コピー先のシートはマクロにてInputボックスにて名前を変更させます。
③名前変更したコピー先のシートにコピー元の別シートのセルの値をコピーします。


上記①~③の手順でVBEのコードを作成したいと思っています。
①~②についてはコード作成済みで問題ないのですが、
③については随時変わってしまうブック名とシート名に、
コピー先のブック名・シート名がコードの中で指定できなくて困っています。


お詳しい方がいらっしゃいましたらご教授いただければと思います。
また、違う方法でも同じことができるのであればあわせて教えていただければと思います。

閲覧数:
3,036
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

編集あり2013/6/2616:35:57

(方法その1)
シートの指定方法を名前指定ではなく、インデックス指定する方法
・名前指定:Thisworkbook.Worksheets("Sheet1")
・インデックス指定:Thisworkbook.Worksheets(1)

(方法その2)
事前にオブジェクトとして宣言しておく
Dim ws As Worksheet
Set ws = Thisworkbook.Worksheets("Sheet1")

処理途中で名前が変わろうが「ws」は、宣言した時にSheet1という名前だったシートのオブジェクト。
使い終わったら・・・
Set ws = Nothing
を忘れずに!

もし、ブック名が処理途中で変わるのであれば、「方法その2」をワークブックに使えばいいと思うよ。


naonaonaonoaoooさん の方法もありました!
お好きな方法を選択するもいいですし、状況に合わせて選択してもいいですし、まぁ方法はいろいろあるってことですよ!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

編集あり2013/6/2616:47:03

>コピー先のブック名・シート名がコードの中で指定できなくて困っています。
シートをコピーすると、新規ブックが作成され、アクティブになりますよね?
そのとき、アクティブなシートを捕まえればよいのでは?
以下のプログラムは、
既存ブックのアクティブなシートを、新規ブックにコピーし、名前を変更。
既存ブックのSheet2のA1の値を、新規ブックのシートのセルA1にセットしてます。

Sub sample()
Dim xShName As Variant, xSh2 As Worksheet

xShName = Application.InputBox("新しいシートの名前を入力してください", Type:=2)
If xShName = False Then Exit Sub
Set xSh2 = ActiveWorkbook.Worksheets("Sheet2")
ActiveSheet.Copy
With ActiveSheet
.Name = xShName
.Cells(1, 1).Value = xSh2.Cells(1, 1).Value
End With
End Sub

編集あり2013/6/2616:42:21

②で得たInputboxの戻り値をそのまま③のブック名で使用してはいかがですか?
シートの名前はマクロ実行中のどこで変更されているか記載がなかったのでわかりませんが。
Sub Macro1()
Dim ブックの名前 As String

ブックの名前 = Application.InputBox("ブックの名前を入力してください。")
Workbooks.Add
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\" & ブックの名前 & " .xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False

'インプットボックスで名前を付けているとのことでしたのでおそらくこんな感じのコード?

Workbooks(ブックの名前 & " .xls").Active '名前を付けたブックを指定する場合の書き方。インプットボックスの戻り値を格納した変数をそのまま使う。


End Sub

以上のコードは例ですがWorkbooks(ブックの名前 & " .xls").Active
こんな感じで新しいブックを指定して貼り付けるとよいと思います。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。