• ベストアンサー

EXCEL  VBA シートコピー、名前変更他

EXCEL  VBA (1)シートコピー、名前変更 (2)他の固定のbookへ転送をVBAで記述 book1のsheet1を開き、そのsheetをコピーしたものをABCというsheet名に替え、 それをbook2のsheetの後ろへ移動するというマクロをPersonalに作ろうとしていますが、 インデックスエラーとか【アプリケーション定義または、オブジェクト定義のエラー】とかインデックスエラーとか になります。 book1のsheet1とかは、マクロを使う場合は、固定的な名前でなくいろいろそのときどきでかわる名前ですが、 マクロを使って、そのsheetをコピーしたものをABCとしてbook2のsheetの後ろへ移動したいということです。 よろしくお願いします。

  • taktta
  • お礼率72% (1031/1430)

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

こんにちは。 Book1のコピー元のシート名が固定ではないので、そのシートがActiveになるとして Book1とBook2が開いている状態なら以下のようになります。 Sub シート移動()   Dim wbk1  As Workbook   Dim wbk2  As Workbook   Set wbk1 = Workbooks("Book1.xls")   Set wbk2 = Workbooks("Book2.xls")      wbk1.ActiveSheet.Copy After:=wbk2.Sheets(wbk2.Sheets.Count)   wbk2.ActiveSheet.Name = "ABC" End Sub

taktta
質問者

お礼

うまくいきました。 ご回答どうもありがとうございました。

その他の回答 (1)

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.1

エラーが出ているコードを載せないと回答できないと思いますが。

taktta
質問者

お礼

はい、そのとおりです。でもうえの人のやり方で解決しました。 ご回答どうもありがとうございました。

関連するQ&A

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • VBAでsheetのコピー

    初めまして、宜しくお願い致します。環境:WindowsXPSP3EXCEL2010やりたい事Book1に複数の名前の付いたsheetがあります。sheetの数は可変です。このBook1のsheetをVBAから新に作成するBook2のsheet1に纏めたいのですが、Book2のsheet1だけに纏めたいのですが、Book2のsheet1の名前は、固定で構いません。Book1の一番初めのsheetにコピーする時だけ3行目にある見出しだけは、Book2のsheet1に付けたく。それ以外のBook1のsheetは、デターだけをコピーしたいのですが、作成したマクロでは、実行時エラーがでます。【実行時エラー'9'】【インデックスが有効範囲にありません】とでます。次の部分です。「Sheets("mySheetName(i)").Copy Before:=Workbooks("Book1").Sheets("Sheet1")」また、Book2のsheet1の名前は固定で構いません。しかし、マクロの記述の仕方も判りません。どなたかご教授願います。何卒宜しくお願い申し上げます。

  • ExcelのVBAでシートのコピー

    Excel2000 Win2000 複数(最低5)のシートが存在するExcelのBookでExcelのVBAを使用して strSheetName="XXX1" intSheetNo = 1 Sheets(strSheetName).Copy after:=Sheets(intSheetNo) とシートのコピーをしています。 この時コピーされたシートのインデックスが2にならないんですが、何故なんでしょ? やりたい事はコピーしたシートの名前をExcelが勝手につけた名前から変更したいんです。 コピーされたシートのインデックスが2になると思っていたので上手く行きません。 Sheets(intSheetNo + 1).Name = "XXX1-1"

  • エクセルVBA 他ブックのシートのsub呼び出し

    ブックBのシート(*)に関数 sub aaaを定義します。 (*)シートオブジェクト名を任意のものに変更します。(→eee) この時、ブックAのVBAからブックBを開き、その参照を得て(workbook型の wbという名前の変数に格納します。)、「Call wb.eee.aaa」と 呼び出すことができると思っていましたが、"オブジェクトは そのメソッド/プロパティを持っていません"という旨のエラーが 出て、呼び出すことができませんでした。 どのようにしたら呼び出すことができるようになりますか。 aaaはpublicで定義しています。

  • エクセルVBA、同名の<定義した名前>がある場合

    エクセル2010です。 Book_AのシートをBook_Bのシートに貼り付けようと思います。 Book_AとBook_Bに同じ名前の<定義した名前>があった場合、手作業でもマクロでも、シートをコピーしてそのまま他BOOKの別シートに貼り付けようとすると、 「移動またはコピーする数式またはシートには、移動またはコピー先のワークシートに 既にある名前<定義した名前>が含まれています。この名前を使用しますか?」 と聞いてきます。 この名前をそのまま使用したいので手作業の時は、[はい] をクリックすればいいだけなのですが、マクロで自動的に貼り付けをしていると、ここで中断されてしまいます。 ここをマクロで自動的に[はい] をクリックしたことにするのはどのようにすればよろしいでしょうか?

  • EXCELにある沢山の名前(範囲名)を一発で消去したい

    エクセルのブックに沢山の名前(挿入-名前-定義で作成した)があります。シートの移動またはコピーで新規ブックに1つのシートをコピーしたら名前の定義までコピーされてしまいました。 そこで、VBAを用いてこの名前を消去したいと考えましたが、方法が全く解りません。 VBAで名前を一気に消すにはどうすればよいのでしょうか?教えてください。よろしくお願いします。

  • VBAでsheetのコピー

    ご回答有難う御座いました。補足説明を致します。動作するとこまでは、出来たのですが、一点変更しました。:=のコピーの所でデバッグすると、エラーになるので、=だけにしました。すると動作するのですが、新しいsheetの名前が、コピー元のsheet名になります。そして、MsgBoxを入れると、エラーになります。また、1sheetだけがコピーされます。大変恐縮ですが、もう一度ご教授願います。補足説明なりますが、やりたい事は、拡張子がxlsmの中に名前のついた10個のsheetがあります。この10個のsheetを拡張子がxlsxのBookにコピーしたいのですが、このBook1のsheetをVBAから新に作成しBook2のsheet1に纏めたいのですが、纏め方は、Book2のsheet1の下から上に10sheetをコピーして、条件としてBook2のsheet1の名前は、固定で構いません。Book1の一番初めのsheetにコピーする時だけ3行目にある見出しだけは、Book2のsheet1に付けたく。それ以外のBook1のsheetは、デターだ4行目以降をコピーしたいのですが、また、コピーしたいsheetの範囲に列は、A1~AFで列は3~62までです。マクロはご教授頂いた、下記通りです。 Sub macro1() Dim i As Long Dim w0 As Workbook Dim s As Worksheet Set w0 = ActiveWorkbook '1枚目シートから貼り付け先のブックを作る w0.Worksheets(1).Copy Set s = ActiveSheet '2枚目以降のデータをコピーする For i = 2 To w0.Worksheets.count With w0.Worksheets(i) .Range("A4:AF" & .Range("A65536").End(xlUp).Row).Copy Destination = s.Range("A65536").End(xlUp).Offset(1) End With Next i End Sub これを先ほど書きました、マクロを教えて頂けませんでしょうか?何せ、マクロ初心者なので、msm相談箱がたよりです。何卒マクロを教えて頂きたく宜しくお願い申し上げます。

  • VBA Shapes コピーと名前

    どうも、お世話になっています。 VBA初心者です。 エクセルのワークシート上の ActiveSheet.Shapes("Picture 1") を コピペするマクロを 作っているのですが あらたにコピーされた図形の名前を設定できますか。 出来たオブジェクトを選択するマクロができなくて困っています。 ご教授願います。

  • Excelのシートのコピー

    現在268枚のシートが入ったファイルがあります。 1つ1つのシートはそれほど情報量が多いわけでもなく、大体印刷すると1ページにおさまるほどの量で 色もあまり使っていなく、単なる文字&表くらいです。 このファイルにあるシートを「移動またはコピー」を選んでコピーをすると、エラーは出ませんが、コピーできません。 移動はできます。 単に「挿入-新規シート」を選ぶと新規にワークシートを挿入することは出来ます。 (試しに370枚までやってみましたが、何のエラーも出ませんでした。) また、このファイルのシートを「移動またはコピー」で他の新規ブックにコピーしようとしてもできません。 移動はできます。 手作業ではなく、VBAではどうかと思いやってみましたが、やはりコピーはダメで移動はOKでした。 これはいったいなぜなのでしょうか? Excelは2000です。 2台のPCで試してみましたが、どちらでもダメでした。

  • VBAによるブック間のシートの移動またはコピペ

    検索で探すもピッタリ来るものが探せなかったものですみません。 Aブックにシート1とシート2があります。 bブックにシート3があります。 シート2とシート3の名前は同じ"abc"とします。 Aブックのシート1にコマンドボタンを設置し、このボタンをクリックするとシート3をシート2に移動またはコピー&ペーストするようにVBAで実現できますでしょうか? よろしくご教授ください。

専門家に質問してみよう