こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Access2013】 上書き保存と追加保存

会社PCがWin10&Office2013へ交換されました。

Excelファイル(xlsx)で出力する際、保存場所とファイル名を自由に指定できるようにしたく添付画像のようなコードを作成しました。
しかし、同名ファイルがあっても「上書き保存しますか?」ダイアログが出ない上に、違うテーブルやクエリーをExcel出力すると1つのxlsxファイル内に別sheetで保存されます。

(例) Q_管理表というクエリーを管理表.xlsxという名前で出力
   →続けてテーブル1というテーブルをExcel出力し管理表.xlsxに上書き保存すると管理表.xlsxの中に「Q_管理表」「テーブル1」という2つのsheetで保存される
   →続けてQ_管理表を再度出力するとsheet「テーブル1」はそのままでsheet「Q_管理表」は上書きされる

1つのxlsxファイル内に別sheetで保存されるのはむしろ好都合なので、上書き保存と追加保存を選択できるようなコードはありませんか?
できない場合は「上書き保存しますか?」ダイアログを出して上書き保存させたいです。

投稿日時 - 2020-02-19 08:17:14

QNo.9714515

困ってます

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

> 「上書き保存しますか?」ダイアログを出して上書き保存させたいです。

sFina = SaveFile_FileDialog
のあとでファイルの存在を確認してみてください。
If Dir(sFina) <> "" Then
If vbNo = MsgBox("上書き保存しますか?", vbYesNo + vbQuestion) Then
Exit Sub
End If
End If

追加というのがどのような動作なのかわからなかったので(クエリでデータが追加されていけば、エクセルの方も追加されたデータで上書きされるので)

投稿日時 - 2020-02-19 14:18:02

お礼

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

出るようになりました。
しかし、「名前を付けて保存」画面でキャンセルしても出てしまいます・・・

投稿日時 - 2020-02-20 08:14:41

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

DoCmdの前に
If sFina <> "" Then
がありますね。
そこの間に入れてみて下さい。

投稿日時 - 2020-02-20 09:30:17

お礼

3度のご回答ありがとうございました。

できました!!
違うテーブルやクエリーを出力するとExcelファイルにsheet追加されるのも確認しました。

他のAccessでもExcel出力したいものが多々ありますので、早速流用させていただきます。
毎回ご回答いただき、本当に感謝しております。

投稿日時 - 2020-02-20 12:25:35

ANo.2

> しかし、「名前を付けて保存」画面でキャンセルしても出てしまいます・

If Dir(sFina) <> "" Then
の前に
If sFina <> "" Then
等としてキャンセルをチェックしてみてください。

投稿日時 - 2020-02-20 09:12:41

お礼

再度のご回答ありがとうございました。

投稿日時 - 2020-02-20 12:22:34

あなたにオススメの質問