• ベストアンサー

複数のブックを上書き保存する方法?エクセル

エクセル2003です。 複数のブックを開いている時に全てのブックを上書き保存したいのですが、 CTRL+Sを押しても、アクティブブックしか上書き保存されません。 まとめて上書き保存する方法はありますか?

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.2

No.1の方の回答にもあるように、マクロで対応するしかないかと思います。 (その上で、「Ctrl+Shift+S」等のショートカットキーを割り当てるか、  ツールバーにユーザーボタンを追加して、そのマクロの動作を割り当て、と) 以下、サンプルを作ってみましたので、参考まで。 (個人用マクロブックに標準モジュールを追加の上、以下を貼付) '~~~~~~~~~~~~~以下を貼付~~~~~~~~~~~~~ Option Explicit Public Sub SaveBooks() 'エラー発生時は「エラー処理」の行に飛ばす On Error GoTo エラー処理   '変数の宣言   Dim Xls As Excel.Application, Wkb As Excel.Workbook, Rsl As Variant   If MsgBox("全てのブックを保存します。", vbOKCancel, "確認") = vbCancel Then GoTo 終了処理   'ActiveWorkBookが所属するExcelアプリケーションを、一括保存の対象にする   '(Excel展開済みの状態で、Windowsのスタートメニュー等から新たにExcelアプリケーションを   ' 起動していた場合、ActiveWorkbookが所属しない方は、保存の対象から外れます)   Set Xls = ActiveWorkbook.Application   '配下の全てのブックを、それぞれの状況に合わせて保存   For Each Wkb In Xls.Workbooks     '現在のファイル名を確認(未保存時はNullとなるので、「& ""」で空文字に変換)     strPath = Wkb.Path & ""     '状況を確認     If Len(strPath) Then       '【既存ファイル時】       '上書保存       Wkb.Save       '念のため別のファイルとして保存するならこちらを有効に       '(拡張子の「.」を、「現在時刻&.」(「:」は全角)に変換)       'Wkb.SaveAs Replace(strPath, ".", Format(Time(), "hh:nn:ss") & ".")     ElseIf Wkb.Saved Then      '【新規ファイルで変更なし】       '何もせず放置     Else                 '【新規ファイルで変更あり】       '「ファイルの保存」ダイアログを表示して、ファイル名を確認       Rsl = Xls.GetSaveAsFilename(Date$, "Excelワークブック(*.xls),*.xls")       If Rsl = False Then     '【ダイアログでキャンセル選択時】         '何もせず放置       Else               '【名前を指定した場合】         '指定した名前で保存         Wkb.SaveAs Rsl       End If     End If   Next   MsgBox "処理を終了しました。", , "確認" 終了処理:   '念のためメモリを明示的に解放   Set Wkb = Nothing   Set Xls = Nothing   Exit Sub エラー処理:   'エラー発生時はメッセージを表示して終了   MsgBox Err & ":" & Err.Description   Resume 終了処理 End Sub '~~~~~~~~~~~~~以上を貼付~~~~~~~~~~~~~ 上記モジュールを保存後、ExcelでAlt+F8などで『マクロ』ダイアログを表示させ、 保存したマクロ(「Personal.xls!SaveBooks」)を選択し、『オプション(O)』ボタンを クリックすると、ショートカットキーを割り当てることができます。 (前述のように「Ctrl+Shift+S」にするなら、ショートカットキー欄にカーソルを  移動させた状態で、Shift+Sを同時に押せば、「Ctrl+□」の表示が自動で  「Ctrl+Shift+『S』」と切り替わって入力されます)

xcmcxm
質問者

お礼

ご丁寧に有難うございます。 難しそうですが理解してみます。

その他の回答 (1)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.1

エクセルにが限ったことではありませんが、基本的にアクティブなファイル以外のファイルから、他のファイルを上書き保存するような機能は用意されていません。 どうしても、すべてのファイルを上書き保存したいなら、マクロを利用することになると思います。 ちなみにExcel2003までは、上書き保存すると、元のデータに戻せないので(上書きしてしまって困ることがよくある)、まとめて上書きするような操作は絶対避けるべきだと思います。

xcmcxm
質問者

お礼

標準機能では、ないのですね。 マクロでループしてやってみます。 ありがとうございます。参考になりました。

関連するQ&A