プロが教える店舗&オフィスのセキュリティ対策術

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

以上、よろしくお願いします。               

A 回答 (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
    • good
    • 0

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 をできるように押してください。

ただ、コピーされた後のボタンは機能しませんが…
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!