• 締切済み

(VBA)指定のシートを名前をつけて保存

VBA初心者でExel2010を使用してます。 下記条件でご教示願います。 1つのブックの中に複数シートがあり、ActiveXコントロールのオプションボタンにて選択された シートだけを新しいブックにコピーし、名前を付けて保存したいです。  ・コピーは値と数値の書式のみ貼り付け  ・新しいブックはマクロ無し  ・シート名は”A””B””C””D””E””F””G”  ・オプションボタン名はシートAが”OPTION BUTTON1”~シートGが”OPTION BUTTON7” 以上、よろしくお願いします。               

みんなの回答

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.2

標準モジュールに最下のVBAコードを貼り付けてください。 A~Gのオプションボタンで対象シートを選択した後に、 マクロ「選択保存」を実行してください。 対象シートを新規ブックへコピーし、名前を付けて保存窓を表示します。 (コピー時に保存するブックのオプションボタンは削除しています) ■VBAコード Sub 選択保存() Dim flag As Integer For i = 1 To 7   If Worksheets(i).OLEObjects("OptionButton" & i).Object.Value Then     Sheets(i).Copy     ActiveSheet.OLEObjects("OptionButton" & i).Delete     Application.Dialogs(xlDialogSaveAs).Show     Exit For   End If Next i End Sub

回答No.1

Sub OPTIONBUTTON_CLICK() Dim myWorkbook As String Dim newWorkBook As String Dim myWorkActiveSheet As String myWorkActiveSheet = ActiveSheet.Name 'コピーするシート名 myWorkbook = ThisWorkbook.Name '現在のブック名 Workbooks(myWorkbook).Activate '現在のブックを表示する With Workbooks(myWorkbook).Worksheets(myWorkActiveSheet) ThisWorkbook.Worksheets(myWorkActiveSheet).Copy'現在のシートをコピーする End With End Sub プログラム的には少し拙い部分があるかもしれませんが、 一応これで動くかと思います。 名前を付けてブックを保存し、閉じるところまで行いたい場合は、 With の間に ActiveWorkbook.Close SaveChanges:=True, _ FileName:="backup.xls"'←ファイル名 と入れるのがいいかもしれません。 (InputBoxで文字入力を促し、 文字が入れられたらFilenameをそれに…すれば良いのかと。 そこは考えてみてください。 標準モジュールに追加した後、 各シートのボタンを右クリックし、マクロの登録を選択。 OPTIONBUTTON_CLICK をできるように押してください。 ただ、コピーされた後のボタンは機能しませんが…

関連するQ&A

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

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

  • VBAで別のExcelブックのボタンのマクロ登録

    Excelブック1とExcelブック2があります。 Excelブック1はVBAで 1)Excelブック2を開いて 2)Excelブック1のワークシート(Sheet1)と  モジュールシート(Module1)を  Excelブック2にコピーします。 3)ワークシート(Sheet1)にはコントロール(ボタン)が貼り付けてあって  このボタンをクリックするとモジュールシート(Module1)の中の  Excute_Button()というプロシージャ(マクロ)を呼び出すため  Excelブック1のVBAで  wb.Worksheets("Sheet1").Shapes.Range(Array("Button 1")).Select  Selection.OnAction = "Excute_Button"  と記述してボタンのマクロの登録をします。   (wbはExcelブック2を指しています) 4)Excelブック2を保存して閉じる。 という処理をしています。 この後、Excelブック1を閉じて、 Excelブック2を開いてワークシート(Sheet1)のボタンをクリックすると Excelブック1が開いてしまいます。 Excelブック2のボタンのマクロの登録のマクロ名を見てみると Excelブック1のファイル名!Excute_Button となっています。 Excelブック1のVBAで、ここを単にExcute_Buttonだけにするには どのようにすればよいでしょうか。

  • VBA セルの値と同じ、別ブックのシートに貼付け

    いつもお世話になります。 シートをコピーし、閉じたブックのシートに貼付けしたいのですが、詳細は次の通りです。 ブックA…マクロがあり、Sheet1のA1プルボタンから店舗名を選択すると、その店舗の在庫が表示されます。 ブックB…シートが100枚ほどあり、シート名が各店舗名になっています。 ブックAを開き、A1から店舗を選択し、在庫数を手入力で修正し、マクロボタンを押したら、ブックB(閉じた)の同じシート名に、値で貼付ける ブックAは上書きしないで閉じる 決算時期で困っています。よろしくお願いします。

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

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

  • エクセルのマクロを使ってシートごとに名前をつけて保存したい

    マクロ初心者です。宜しくお願いします。 1つのブックにシートが複数あります。 それぞれシートをコピーして新しいブックを作成し そのブックに名前をつけて保存したいです。 例えばブック名が「売上管理」でそのシートが「A店」「B店」「C店」と3シートあるとします。 シート名:A店を他のブックにコピーしてマイドキュメントに名前を付けて 保存する場合のマクロを教えてください。 ちなみにその際のブック名は「シート名+任意のセル(D2)」と できれば一番助かります。 ちなみにD2のセルにはToday関数が入ってます。

  • エクセルのシートのコピーについて

    シートのコピーをVBAで行いたいのですが、エラーになってしまいます。 間違っている箇所が分からないのでご教授お願いします。 貼り付けというブックにマクロが組まれています。 ”データ”のブックにあるシート名が”貼り付けのブックのリスト”のシートに記載されています。 リストのシートに記載されているシートを貼り付けのブックにコピーしたいです。 よろしくお願いします。 Sub シートコピー() 行数 = 2 Do Until IsEmpty(Cells(行数, 3).Value) コピー元 = Workbooks("貼り付け.xls").Worksheet("リスト").Cells(行数, 3) Workbooks("データ.xls").Worksheet(コピー元).Copy After:=Workbooks("貼り付け.xls").Sheets(Workbooks("貼り付け.xls").Sheets.Count) 行数 = 行数 + 1 Loop End Sub

  • VBA 指定した範囲のデータ抽出

    Excel VBA初心者の質問です。 以下の作業を行うため、30個のファイルをVBAを活用して処理したいのですが、 詳しい方おられましたらコードの書き方をご教授お願いいたします。 ネットで参考になるコードをいくつか調べたのですがギブアップでした。 1.フォルダA内の一番上のファイルから順番に処理(ファイル名:1101,1102,1103・・・1130) ※ファイルのシート名はそれぞれ「"データ"番号」となっている。 2.「"データ"1101」シートのデータ範囲(A1:AT1000)、(A7000::AT8000)の2つの範囲をコピー 3.新しいBookのSheet1に上詰めで貼り付け 4.次ファイルの「"データ"1102」シートに2の処理を行う 5.新しいBookのSheet2に上詰めで貼り付け 以上の処理を1130のファイルまで繰り返し行います。

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

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

  • エクセルでシートを新規Bookにコピーして保存

    いつもお世話になっております。 毎回お世話になっております。 過去にも似たような質問をさせていただいてその時々の要求は解決しているのですが、悲しいかな各々のVBAが組み合わせられません。(というレベルです) やりたいことは、特定のBookのアクティブシートを別の新規BookのSheet1にコピーして数値で貼り付ける。➣ここまではできました。 問題はこの、新規Bookを指定のセル(D5とA1)の内容をファイル名にして指定のフォルダに保存する。が出来ません。 1.新規BookでVBAを動かしたいのですが、複数のPCで使う時にどこに記録するのかわかりません。 2.コピーして数値で貼り付けから保存までのVBAは元のシートから直接(1回の操作)でも、新規Book1を表示させてからの操作でもどちらでも良いです。 3.Book1を保存するファイル形式はVBAが含まれないxlsxが好ましいです。(メールで送信するので)

  • 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相談箱がたよりです。何卒マクロを教えて頂きたく宜しくお願い申し上げます。

専門家に質問してみよう