質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

2回答

8211閲覧

保存時にエラーになる原因を教えてください

mi_ku

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2020/05/04 00:06

先日こちらでファイル名を変更する方法を教えていただきました。
おかげさまでボタン一つでファイル名の変更ができ、入力ミスもなくなりとても助かっています。

次のステップとして、ファイルを保存するときに同時に2か所に保存できるようにしました。
ThisWorbookに

Private Sub Workbook_BeforeSave(ByVal SaveAsUl As Boolean, Cancel As Boolean)
Const svPath As String = "C:\Users"
ActiveWorkbook.SaveCopyAs Filename:=svPath & ActiveWorkbook.Name
End Sub

としたのですが、保存するときにうまくいくときと失敗するときがあります。
必ず失敗するわけではないのですが、何がいけないのでしょうか?
うまくいかないときは、もう一つの保存先が何も変わっていないときと、
実行時エラー1004が出るときです。

?ファイル名またはパスが存在しません。
?ファイルが他のプログラムによって使用されています。
?保存しようとしているブックと同じ名前のブックが現在開かれています。

と出ます。
3点とも問題ないことを確認しているのですが、
エラーが出るときと出ないときがあって困っています。

念のため前回のファイル名が変更になるコードも下に記しておきます。

ご教授の程、よろしくお願いいたします。

Sub ブック名変更() Dim Path As String Path = ThisWorkbook.Path & "\" & ThisWorkbook.Name ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Sheets("入力").Range("I2").Value Kill Path End Sub

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

mi_kuさんの回答には、なりませんがわたしも症状が出ます。
私の場合、ノートパソコン3台の内1台だけ症状が出ます
データはどのパソコンからでも操作したいため、SDカードにデータ保存しています問題のパソコン、SDカード認識します、データも呼び出し、書き換えも 出来ますが保存の時、症状が現れます、SDカード挿入口を「接点復活剤」などで 清掃しても 症状が改善されません(パソコンの内部的な故障かも?)
USB(SD)変換アダプターでSDカードを使用しています。
C:ドライブには問題なく 保存できます

イメージ説明

投稿2020/12/24 06:48

syousuke.33

総合スコア312

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

SaveAsするとファイル名が変わるので、その後の本来の保存が上手く行かないのでは?
テストしてませんが、これでどうなりますか?

VBA

1Private Sub Workbook_BeforeSave(ByVal SaveAsUl As Boolean, Cancel As Boolean) 2Const svPath As String = "C:\Users\" 3Dim origFile As String 4origFile = ActiveWorkbook.path & "\" & ActiveWorkbook.name 5ActiveWorkbook.SaveCopyAs Filename:=svPath & ActiveWorkbook.Name 6ActiveWorkbook.SaveCopyAs Filename:=origFile 7End Sub

投稿2020/05/04 00:36

otn

総合スコア86321

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mi_ku

2020/05/04 01:29

otnさん、ありがとうございます。 テストしてみましたが、やはり実行時エラー1004が出ます。
TanakaHiroaki

2020/05/04 01:36

mi_kuさん "C:\Users\" へのファイル書き込み権限を確認してみてください。
mi_ku

2020/05/04 02:03

すみません、書き込み権限はどのように確認したらよいのでしょうか? 確認方法を検索してみましたが、わかりませんでした。
TanakaHiroaki

2020/05/04 02:13

そうですか。 Workbookを手動操作で保存し、正常終了すれば書き込み権限があるフォルダです。
otn

2020/05/04 02:14

> すみません、書き込み権限はどのように確認したらよいのでしょうか? えー、手動保存を確認していなかったと言うことですか?
mi_ku

2020/05/04 02:20

TanakaHiroakiさん、ありがとうございます。 操作をするフォルダで間違いありませんでした。 otnさん、意味が理解できずすみません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問