• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル VBA シート保存ボタン)

エクセルVBAシート保存ボタンとは?

このQ&Aのポイント
  • エクセルVBAシート保存ボタンとは、エクセルのシート上に配置されたボタンを利用して、ボタンを押すことでシートの内容を保存する機能です。
  • この機能を利用することで、手動で保存する手間を省くことができます。
  • また、ファイル名や保存先の変更も可能であり、便利に利用することができます。

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

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.3

以下のように変更してみてください。   Set NewWkbook = ActiveWorkbook   NewWkbook.Unprotect Password:=""   For wIx = NewWkbook.Sheets(1).Shapes.Count To 1 Step -1      If Left(NewWkbook.Sheets(1).Shapes(wIx).Name, 5) <> "Chart" Then 'グラフ以外は削除       NewWkbook.Sheets(1).Shapes(wIx).Delete     End If   Next

pop2003
質問者

補足

ありがとうございました! 本当に感謝しています。 すいません 質問ばっかりで (1)NewWkbook.Unprotect Password:="1111" 例えば”1111”と設定しても 保存先のファイルには 何も変化はないのですが・・ これはどういう設定なのでしょうか? (2) "Chart" Then 'グラフ以外は削除 ですが、オートシェイプの図形なども 消さない為には ””の中に何かを記述すれば 出来るものなのでしょうか? いつも本当にありがとうございます!

すると、全ての回答が全文表示されます。

その他の回答 (4)

  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.5

すみません。 以下のように変更してみてください。 ちなみに、オートシェイプについては、私もシート上になにがあるか分かりませんので 自分で調べてください。 ※調べる方法   For wIx = 1 To ActiveSheet.Shapes.Count      MsgBox ActiveSheet.Shapes(wIx).Name    '←オートシェイプの名称が表示される   Next   'ボタンが2個の場合   「Button 1」、「Button 2」のように表示されると思います。   この2個のボタンのみ削除するには以下のようにしてもいいです。   For wIx = ActiveSheet.Shapes.Count To 1 Step -1      If ActiveSheet.Shapes(wIx).Name = "Button 1" or_       ActiveSheet.Shapes(wIx).Name = "Button 2" Then_       ActiveSheet.Shapes(wIx).Delete     End If   Next   又は   For wIx = ActiveSheet.Shapes.Count To 1 Step -1      If left(ActiveSheet.Shapes(wIx).Name,6) = "Button" Then       ActiveSheet.Shapes(wIx).Delete     End If   Next '--------------------------------------------------------↓(変更部分)   OldWkbook.Sheets(Array(StName1)).Copy   Set NewWkbook = ActiveWorkbook   ActiveSheet.Unprotect Password:="1111"     '←シートの保護を解除(ActiveSheetに変更)   For wIx = NewWkbook.Sheets(1).Shapes.Count To 1 Step -1      If Left(NewWkbook.Sheets(1).Shapes(wIx).Name, 6) = "Button" Then 'ボタンのみ削除       NewWkbook.Sheets(1).Shapes(wIx).Delete '←1ではなくwIxです     End If   Next   NewWkbook.Sheets(1).Name = StName1   ActiveSheet.Protect Password:="1111"      '←シートに保護を掛ける(ActiveSheetに変更) '--------------------------------------------------------↑(変更部分)

pop2003
質問者

お礼

pkh4989さん 本当にありがとうございます! 本当に感謝しております! またこんなに親切なアドバイスを いつもありがとうございました。 また教えて下さい! オートシェイプの名称の 探し方も 今後も使っていきます!

すると、全ての回答が全文表示されます。
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.4

保存先も同じくパスワードを掛けるなら、以下のように追加・変更してください。 ちなみに、オートシェイプのなかに「ボタン」以外は全て残すなら、ボタンのみ削除すればいいと思います。 ※オートシェイプの種類は以下のように、「NewWkbook.Sheets(1).Shapes(wIx).Name」で   調べるしかないと思います。   削除したいオートシェイプがボタン以外にもあるなら、以下のように「or」で条件を追加すればいいです。   'If Left(NewWkbook.Sheets(1).Shapes(wIx).Name, 6) = "Button" or _   '  NewWkbook.Sheets(1).Shapes(wIx).Name = "Organization Chart 2" then      Set NewWkbook = ActiveWorkbook   NewWkbook.Unprotect Password:="1111"      '←シートの保護を解除   For wIx = NewWkbook.Sheets(1).Shapes.Count To 1 Step -1      If Left(NewWkbook.Sheets(1).Shapes(wIx).Name, 6) = "Button" Then 'ボタンのみ削除       NewWkbook.Sheets(1).Shapes(wIx).Delete     End If   Next   NewWkbook.Protect Password:="1111"       '←シートに保護を掛ける 以上、頑張ってください。

pop2003
質問者

補足

pkh4989さん いつも親切な回答本当にありがとうございます! 私の勉強不足なのですが・・・ (1) "Button" Then 'ボタンのみ削除Button(名前はグラフ保存) してもオートシェイプが も消えてしまいます! 何がいけないのでしょうか? (2)シートのオブジェクト解除して Unprotect Password:="1111"      '←シートの保護を解除 Protect Password:="1111"       '←シートに保護を掛ける 何も変化がないです! 本当にすいません! (1)は別に消したくなかったら オートシェイプをやめて セルに直接記入しておけば 良いのですが・・ボタンを消せて良かったです!が 今回の件が 気になります!すいません もう少しお付き合いして下さい!

すると、全ての回答が全文表示されます。
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

以下のように追加してください。 シートの保護を解除しなければなりません。   NewWkbook.Unprotect Password:="password"    '←パスワードを解除(パスワードを入れてください)   For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count     NewWkbook.Sheets(1).Shapes(1).Delete   Next

pop2003
質問者

補足

ありがとうございます! シートのオブジェクト を解除して 記述を直しました! エラー表示はなく コピーできましたが 保存フォルダを開いてコピーしたものを 見ると ボタンは消えていましたが グラフの表も消えていました! こういう現象の時にはどのようにすれば 良いのでしょうか?

すると、全ての回答が全文表示されます。
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.1

こんにちは。 For wIx = 1 To NewWkbook.Sheets(1).Shapes.Count NewWkbook.Sheets(1).Shapes(1).Delete '←wIxを1に変更 Next

pop2003
質問者

お礼

Sheetの保護でオブジェクトのみ 保護をかけています! それを解除すると上手くコピー 出来るのですが・・ 方法は、Sheetの保護解除しか ないのでしょうか?

pop2003
質問者

補足

ありがとうございます! すいません!いつも! 1に変更しても 実行時エラー1004 アプリケーション定義または オブジェクト定義のエラーです! と表示されます。 どうしてなんでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A