• ベストアンサー

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

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

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1619/2458)
回答No.1

別の考えかたで、Thisworkbookを名前を付けて保存(マクロなしxlsx)してからSheets("マクロ")を削除します。 Sub Test() Dim FileName As Variant FileName = Application.GetSaveAsFilename(InitialFileName:="既定のファイル名.xlsx", FileFilter:="Excelファイル,*.xlsx") If FileName = False Then Exit Sub End If ActiveWorkbook.SaveAs FileName, FileFormat:=xlOpenXMLWorkbook Sheets("マクロ").Delete End Sub

konrar51
質問者

お礼

目から鱗です。 本当にありがとうございます!

関連するQ&A

  • Excel VBAでシートを別なBookにするには?

    Book ABC.xls の Sheet("TEST") を書式と値(数式でなく)だけコピーし別なBookとして保存したいのです。 その際、Sheets("LOGIC").Range("A1")を、マクロで1回目は2、2回目は3とし、12回目の13まで行います。Sheets("TEST")はSheets("LOGIC").Range("A1")を参照しているので、その結果として、Sheets("TEST")の値は当然12通りに変化します。 新たに自動作成される別なBookは Sheet1~Sheet12の12枚のシートをもち、それぞれがABC.xls の Sheets("TEST") の12通りのコピーとなるようにしたいのです。 このようなマクロはどう作ればいいのでしょうか? お手上げです。何卒よろしくお願いします。

  • 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

  • Excel VBAでシートを新規ブックとして、名前を付けさせて保存するには

    こんばんは。質問です。 シートを新規ブックにコピーしたいのですが、その際に 名前を付けて保存のダイアログを出して、名前のボックス に「シート名」だけを表示させておいて、後は操作者が任意に 名前を追加できるようにして保存するようにするにはどのように したらいいでしょうか? 例えば、別ブックに保存したいシートが「売上」というシート名 であればダイアログボックスに「売上」と表示させ、操作者は任意で 「売上4月」などとするようにして保存したいということです。 よろしくお願いします。

  • 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 -------------------------------------------------------------

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

    アクティブになっているブックの複数のシート(具体的には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 さらに新規に作ったブックには変更ができないようにしたいと考えています。 いろいろ、試したり、調べたりしたのですが、どうしても、値と書式のみのコピーができません。 おまけに結合したセルも解除されたりしています。 どなたか、解決策をご存知の方、ご教授ください。宜しくお願いします。

  • VBAでのシートコピーについて

    VBAでシートを新しいブックにコピーして、名前を付けて保存したいのですが、同じファイル名が存在すると、必ず「上書きしますか?」のダイアログが表示されてしまいます。無条件で上書きする方法ってありませんか? 今は↓のようなコードを書いてます。 Application.ScreenUpdating = False Sheets("sheet1").Copy ActiveWorkbook.SaveAs Filename:= _ "C:\Book1.xls", FileFormat:=xlNormal, _ Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False ActiveWindow.Close

  • VBA 複数シートをまとめて別ブックに移動させる

    Winは10、Excelは2016を使用しています。 複数シートをまとめて別ブック(新ブック)に移動させて、名前を付けて保存したいのですが、私の知識、理解が追い付かずに困っています。 シート名ではなく、シート番号で指定したいです。 移動させたいのは、左から3番目~27番目までのシートです。 Sub 移動 () Dim arr(2 To 26) As Integer Sheets(Arrar(arr)).Select Selection.Worksheets.Move '(保存場所選択と名前は手動でやります。) 'マクロが付いている移動元のブックは変更を保存せずに終了したいです。 おかしいところだらけですが、上記のおかしいところ、修正方法、追記文構文を教えて下さい。 よろしくお願い致します。

  • EXCELの複数シートをそれぞれ別ブックへ保存したい

    EXCEL97を使用しています。 1つのブック内に複数のシート(10~20枚)があります。 これを全て1シートずつの別のブックに分けて保存をするマクロを作成したいのですが、できますでしょうか? できれば各シート内の(A4)に入力されている文字列を各ブックの名前として使用したいのですが・・・。 (各シートのセルA4の値に重複はありません) 現在は各シートを新しいブックにコピーして名前を付けて保存、の作業をシート数分繰り返しています。 すみませんがよろしくお願いいたします。

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

    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メソッドの引数を指定せず新規ブックにコピー及び移動なら可能なのですが、引数の指定に誤りがあるでしょうか?ちなみにアドイン自身の内部でシートを追加、シート削除、名前の変更は可能なようです。 どなたかご教示いただきたく、よろしくお願いいたします。

  • 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の名前は固定で構いません。しかし、マクロの記述の仕方も判りません。どなたかご教授願います。何卒宜しくお願い申し上げます。

専門家に質問してみよう