• ベストアンサー

Excelのworkbookの各sheetを分割

Excelのworkbookの各sheetをそれぞれ単独のworkbookにばらかすVBAを教えて下さい。

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

  • ベストアンサー
  • SI299792
  • ベストアンサー率48% (716/1482)
回答No.1

フォルダはこのワークブックと同じフォルダ ファイル名はシート名にしました。 Option Explicit ' Sub Macro1()   Dim Sheet As Worksheet '   Application.ScreenUpdating = False '   For Each Sheet In Worksheets     Sheet.Copy     ActiveWorkbook.Close True, ThisWorkbook.Path & "\" & Sheet.Name   Next Sheet End Sub \ はコピペすれば半角¥になります。

bigsky0819
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

元のブックについて、各シート間で、 (1)関数の他シートデータの参照、他シートデータからの参照はありませんか (2)他シートへのリンク、他シートからのリンクはありませんか。 (3)設定、例えば、ファイルーオプション、の設定で特殊な項目はありませんか (4)その他 アドインの問題など、マクロの存在の問題、その他は勉強不足ですぐ想像できないですが 、がありませんか。  そういうことを考えなくて、For Each Sh In Worksheetsで簡便に全シートが捉えられるからと言って 使って捉えてコピーし保存で仕舞、で良いのでしょうか? ー (3)などのためには、元のブックのシートについて、1つだけ残して他シートを消し、名前をつけて保存するを、各シートに付いて行う方が、良いのかな、と思ったりしました。

bigsky0819
質問者

お礼

解決できました。ありがとうございました。

関連するQ&A

  • なぜ「Workbook」ではなく「Workbook

    なぜ「Workbook」ではなく「Workbooks」なのでしょうか? エクセルVBAについて教えてください。 ファイルのタイトルバーのところに、文字を入れたくてVBAコードを調べていたら Workbooks.Application.Caption = "タイトル" と言うコードが出てきました。 このコードでやりたいことが行えるので問題ないのですが、 なぜファイル(ブック)は一つしか開いてないのに、「Workbooks」なのでしょうか?

  • 【緊急】EXCEL VBAの『THIS WORKBOOK』について質問

    【緊急】EXCEL VBAの『THIS WORKBOOK』について質問があります. 現在,シート数100枚程度にマクロをかけようとしています. これらにマクロをかける際に『THIS WORKBOOK』でマクロを作成し,全体にかけているのですが 二枚程度は表紙のニュアンスでシートを作成したもので,マクロをかけたくありません. このような場合,どのようにマクロをかければよいのでしょうか. 私のイメージでは 『シート1と2以外であればマクロを実行する.』なのですが なかなかそれらしいサンプルプログラムが発見できずに悩んでいます. 『THIS WORKBOOK』ではできないのですかね・・・・.

  • Excel の WorkBookオープンとWorkBookアクティブの

    Excel の WorkBookオープンとWorkBookアクティブの違いが解りません。 わかる方、ご説明よろしくお願いします。

  • エクセルのマクロでシートのコピー

    いつもお世話になっております。 エクセル2000で次のことをマクロで行いたいのです。 いくつかWorkbookが開いている状態で、シートのコピーを行うのですが、シート名やブック名はその都度違います。 具体的には、Workbook"A" に "a"、"b"、"c" の3つのシート、Workbook"B" に "f"、"g"、"h"の3つのシートがあり、 Workbook"A" の Sheet("a") を Workbook"B" の Sheet("h") の前にコピーしたいのです。 Sheets(1).Copy before:=Workbooks("B.xls").Sheets(3) ところがWorkbookの名前がその都度変わるので困っています。 ブック間の移動は ActiveWindow.ActivateNext などで行っていますがシートのコピーがどうしても分からないので お願いします。  

  • Excelシートを分割してcsvに出力するVBA

    すいませんが、ご教示願います。 パソコンExcelのVBAです。 Excelファイルシートの24,000行あるデータを、 任意に選択した範囲(例えば2行目から3,000行目)をcsvデータに出力する VBA構文が知りたいです。 どなたかおわかりになりますでしょうか。

  • VBAの「This Workbook」について

    VBAの「This Workbook」にコードを書くことについて教えて下さい。 ここにコードを書きと、例えばどんな便利な機能があるのでしょうか? よろしくお願いします。 私は下記の意味はだいだいわかります。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Private Sub Workbook_Open()

  • EXCEL VBAで一枚のシートから個別にシートを作りたいのですが・・・

    こんばんは。 excel vba の質問です。 sheet 1に 日付 氏名 営業売上が入っているのですが 月末に氏名別に各シートができてちょうどタイムーカードのようになる方法はないでしょうか? excel vbaならなりそうですが初心者であまり理解ができていません。 どうか教えて下さい。よろしくいお願いします。

  • エクセルVBA 保護シート&フィルタ実行 全シート

    VBA超初心者です。 たくさんのシートのあるエクセルで、 シート保護後もフィルタを使用できるようにVBAを設定したいと思ってます。 (現在エクセル2000を使用してます) ネットで調べてVBAを設定してみました。 しかし下記のようにするとコンパイルエラーになってしまうのですが、 正しい方法を教えていただけると助かります。 Option Explicit Private Sub Workbook_BeforeClose(Cancel As Boolean)   Application.CommandBars("Cell").Reset End Sub Private Sub Workbook_Open()   With Application.CommandBars("Cell").Controls.Add( _            Type:=msoControlButton, Before:=1, Temporary:=True)     .Caption = "AutoFilter"     .OnAction = "ThisWorkbook.filter"   End With   With Worksheets.Select     .Unprotect     .EnableAutoFilter = True     .Protect UserInterfaceOnly:=True   End With End Sub Private Sub filter()   On Error Resume Next   Selection.AutoFilter End Sub

  • Excelのシートを隠す方法

    Excelにて表作成をしえおります。 1枚のシートに定価と掛け率を入れて隠したデータを作りたいのですが、シートを隠す+保護+パスワード設定をしましたが、VBAにてシートがあることがわかってしまいます。VBA画面でもシートがあることがわからないようにする方法はありませんでしょうか?できればマクロは使わない方法にてお願いいたします。

  • エクセル VBA シート名を別シートにコピー

    早速の質問ですが エクセルVBAで シート名を別シートにコピーなのですが 10個のシートを順にシート名をコピー&ペーストしたいのです。 Dim aworkbook As Workbook Dim bworkbook As Workbook Set bworkbook = ActiveWorkbook Workbooks.Add Set aworkbook = ActiveWorkbook for i=1 to 10 bworkbook.Activate Worksheets(i).Select Application.CutCopyMode = False aworkbook.Activate Worksheets(i).Select ここに入る文章がわかりません Range("A1").Select next と以上な感じで作ってみたのですが どう貼り付けして良いかわからない状況です nextでまわす以上変数でなければだめなんでしょうけれども 構文が思いつきません。 皆様よろしくお願いいたします。