• 締切済み

アドイン内部のシートのコピーと移動

Excel VBAで、アドインについて質問させていただきます。 他のブックを開いている時に、アドイン自身にあるシートを、 アドイン内で移動及びコピーをしたいのですが以下のコードではエラーとなってしまいます。 移動(アドイン自身の変数 i 番目のシートを、左へ移動) ThisWorkbook.Sheets(i).Move before:=ThisWorkbook.Sheets(i).Previous コピー(アドイン自身の変数 i 番目のシートを、アドイン自身の末尾にコピー) ThisWorkbook.Sheets(i).Copy after:=ThisWorkbook.Sheets(Thisworkbook.Sheets.Count) MoveやCopyメソッドの引数を指定せず新規ブックにコピー及び移動なら可能なのですが、引数の指定に誤りがあるでしょうか?ちなみにアドイン自身の内部でシートを追加、シート削除、名前の変更は可能なようです。 どなたかご教示いただきたく、よろしくお願いいたします。

みんなの回答

  • kkkkkm
  • ベストアンサー率65% (1606/2443)
回答No.2

アドインで確認したわけではありませんが iが1の時は移動で失敗しますけど、そんなことじゃないのでしょうか。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.1

VBEditorを開き、 左ペインのThisWorkbookを選択し、 プロパティウィンドウにあるIsAddinをFalseにすることで エラーなく複写や移動ができるようになると思います。

関連するQ&A

  • ブック内のシートを新規ブックにコピーしたい

    アクティブになっているブックの複数のシート(具体的には30シート)をデータ、書式のみをコピーし保存したいのですが、どうもうまくいきません。 アクティブブックのシートには、フォームコントロールのボタンや、関数、リスト形式で指定したデータ(入力規則を利用し別ブックのデータシートを元の値に指定)など、全てをコピーしてしまいます。 現在のコーディングは以下のようにしています。 For intRow2 = 1 To ThisWorkbook.Sheets.Count If intRow2 > 5 Then ’6シート目からコピー cpyshtname = Trim(ThisWorkbook.Sheets.Item(intRow2).Name) ThisWorkbook.Sheets(cpyshtname).Copy after:=opn_book.Sheets("Sheet1") Sheets(cpyshtname).Name = cpyshtname opn_book.Sheets(cpyshtname).Cells.Copy opn_book.Sheets(cpyshtname).Cells.PasteSpecial Paste:=xlPasteValues opn_book.Sheets(cpyshtname).Cells.PasteSpecial Paste:=xlPasteFormats End If Next さらに新規に作ったブックには変更ができないようにしたいと考えています。 いろいろ、試したり、調べたりしたのですが、どうしても、値と書式のみのコピーができません。 おまけに結合したセルも解除されたりしています。 どなたか、解決策をご存知の方、ご教授ください。宜しくお願いします。

  • Excel VBA 非表示の別ブックへシートコピー

    Excel2010のVBAで、別のExcelブックを非表示で開いて、 シートをコピーすると、 「実行時エラー'1004':WorksheetクラスのCopyメソッドが失敗しました。」 というエラーが出て、正しくシートをコピーすることができません。 (1)のように自分のブックへはシートをコピーすることはできるのですが、 (2)のように別のExcelブック上でシートをコピーする場合と (3)のように別のExcelブック上にシートをコピーする場合の いずれも同様のエラーになります。 どのように記述すれば(2)と(3)でもコピーすることができるのでしょうか。 ------------------------------------------------------------- Sub test()  Dim newEx As Excel.Workbook  Dim newFile As String  newFile = ThisWorkbook.Path & "\New_Book.xlsx"  Set newEx = Workbooks.Open(newFile, UpdateLinks:=0)  Application.Windows("New_Book.xlsx").Visible = False  '(1)New_BookのSheet3を自分のブックにコピーする (正常)  newEx.Worksheets("Sheet3").Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)  '(2)New_BookのSheet3をNew_Bookにコピーする (エラー)  newEx.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  '(3)自分のブックのSheet3をNew_Bookにコピーする (エラー)  ThisWorkbook.Worksheets("Sheet3").Copy after:=newEx.Sheets(newEx.Sheets.Count)  Application.Windows("New_Book.xlsx").Visible = True  Application.DisplayAlerts = False  newEx.Save  newEx.Close  Application.DisplayAlerts = True  Set newEx = Nothing End Sub -------------------------------------------------------------

  • VBA シートのコピー

    シートをコピーし、挿入をシートの末尾にする場合はどうなりますか? マクロを使ってやったときに、20のシートがあったため、下記のようになりますが、これだと、2回目以降にコピーしたとき20番目に挿入されて末尾には移動しないですよね。 そこは、どうしたらいいですか?? シート名「あああ」 Sheets("あああ").Copy After:=Sheets(20) お願いします。

  • Excel VBA 指定シートの取込

    こんにちは。 ExcelのVBAを使用して、異なるBookのシートを取込みたいのですが、 シートが無かった場合の処理方法がわかりません。 現在のコードは下記の様になっております。 With Workbooks.Open"BOOK1.xls" .Worksheets("Sh1").Cells.Copy ThisWorkbook.Sheets("Sheet1").Range("A1") .Worksheets("Sh2").Cells.Copy ThisWorkbook.Sheets("Sheet2").Range("A1") .Worksheets("Sh3").Cells.Copy ThisWorkbook.Sheets("Sheet3").Range("A1") .Close End With Book1に指定したシートが無い場合、何もしないようにしたいのですが、 どの様に書き換えれば宜しいでしょうか? よろしくお願いします。

  • Excel:アドイン(ThisWorkbook)内のプロシージャからシートの操作は可能なのでしょうか?

    アドインとして登録して、 そのThisWorkbook内のプロシージャからシートの操作(削除、追加、コピーなど)を行おうとしています。 これを行うにはどうすればいいのでしょうか? まだXLSファイルの状態の時はうまく動作しましたが、 アドインとして登録すると、 >実行時エラー'91' >オブジェクト変数またはWithブロック変数が設定されていません。 という旨のエラーメッセージが出て終了してしまいます。 (ActiveSheet.Delete の処理でエラーが起こっています) 昨日質問させていただいたとき、 >また、ThisWorkBook などの記述があるとアドインのブックになってしまうので、 >処理上の不都合が起きないようにする事が大切かと思います。 ということをお聞きしました。 おそらく、今回の問題となっている点にあたるものだと思います。 回避する方法はあるのでしょうか?

  • ブックの保護(シート構成) でシートのコピー

    エクセルで外部データを参照させるために, 別のブックを開きシートをコピーし元のブックに貼り付け別のブックは閉じるというマクロを作成しました。 Workbooks.Open Filename:=a Sheets("データ").Select Sheets("データ").Copy After:=Workbooks("ファイル.xls").Sheets("メニュー") Workbooks(a).Close SaveChanges:=False a(変数)というファイルを開く シートのデータを選択 データをコピーし ファイル.xls のメニューシートの後に貼り付け a(変数)のエクセルファイルを保存せずに閉じる 動作としては正常に動きました。 しかし、この ファイル.xls には ID とパスワードで管理しています。 その管理したシートがあるんですが、それを表示させないために シートを非表示→ブックの保護→シート構成 を行いました。 マクロを動かすと、シート構成をしているので Sheets("データ").Copy After:=Workbooks("ファイル.xls").Sheets("メニュー")  が動かないことに気が付きました。 何かいい方法があればご教授お願いします。

  • ACCESS EXCELシートのコピー

    ACCESSでEXCELシートのコピーを教えてください。 ブックに原本というシートがあり、それを先頭にCOPYして シート名を店舗名にしようと思っています。 原本が原本(2)にCOPYはできるのですが、名前の変更が 出来ません。 原本(2)の(2)がまずいのか、”インデックスが有効の範囲にない” でエラーになります。 COPYする時に、直接、名前を指定出来るならその方がありがた いのですが、何か方法はありませんか? EXCELブックOPENして、店舗マスタを読みながらCOPYするようにしています。 xlsobj_.sheets("原本").Copy before:=xlsobj_.sheets("原本") xlsobj_.sheets("原本(2)").NAME = 店舗名 単純に原本と言うシートを10個程度(店舗が10店舗ぐらいあります) COPYしてそれぞれのシート名を店舗名にしたいだけです。 宜しくお願い致します。

  • エクセルVBAでシートコピー

    Sheets("Sheet1")をCopyして、現在の最終のシートの後に持っていき、それを変数wsに設定しようとしています。 Sub TEST01() Sheets("Sheet1").Copy After:=Sheets(Sheets.Count) Set ws = Sheets(Sheets.Count) MsgBox ws.Name End Sub これで通常はうまくいきますが、最終シートが非表示になっているとwsはその非表示のシートが指定され、Sheets("Sheet1")をCopyしたものでなくなってしまいます。 Sheets("Sheet1")をCopyして、現在の最初のシートの前に持っていき、それを変数に設定しようとしています。 Sub TEST02() Sheets("Sheet1").Copy Before:=Sheets(1) Set ws = Sheets(1) MsgBox ws.Name End Sub これで通常はうまくいきますが、最初のシートが非表示になっているとwsはその非表示のシートが指定され、Sheets("Sheet1")をCopyしたものでなくなってしまいます。 Set ws = ActiveSheet で設定できましたが、それ以外の方法はないでしょうか?

  • 【VBA】シートを別ブックにコピーして保存したい

    8つのシートのうち、 Sheets("マクロ") を除くすべてのシートを新規ブックにコピーし、ダイアログボックスを開いて名前を付けて保存させる→Thisworkbookを上書き保存せずに終了し新規ブック画面へ移動する マクロを作成したいのですが、どの様にロジックを組めばよいでしょうか。

  • Excel 2007 マクロ 別ブックのシートをコピーする方法

    Excel 2007 マクロ 別ブックのシートをコピーする方法 別ブックのシートをコピーして アクティブなブックのシートにコピーしたいと思います。 下記マクロを作成しました。 貼り付ける際に、クリップボードに保存するかどうか 聞かれるメッセージが表示されてうまくいきません。 またもっとシンプルな書き方があればアドバイスお願いします。 Sub 取り込み() Dim wb As Workbook Set wb = Workbooks.Open("\") Sheets("Sheet1").Select Cells.Select Selection.Copy ThisWorkbook.Activate ThisWorkbook.Sheets("特定").Select ActiveSheet.Cells(1, 1).Select ActiveSheet.Paste wb.Close End Sub

専門家に質問してみよう