- ベストアンサー
ExcelVBAコードで上書き保存できないエラーの解決方法
- ExcelVBAのコードで上書き保存時に「実行時エラー1004 ファイルを保存できません」というエラーが発生してしまう状況です。
- 自分のPCではエラーが発生せず保存できるのですが、友人のPCでは上記のエラーが発生します。
- コードはExcelを非表示にしてフォームで処理を行い、上書き保存後にExcelを終了しています。解決方法をご教示いただけませんか?
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- ExcelVBAによる 上書き保存時の処理について
ExcelVBAによる 上書き保存時の処理について 先日、作業で使用するエクセルにて下記のようにSheet1というシートを保存するVBAを作成しました。 しかし、格納したいパスに同名のファイルが存在した場合、上書き確認メッセージ上で上書き保存をするか否かを確認するのですが この時、「いいえ」を押下してしまうとそのまま、保存せず処理を終了してしまいます。 私としては、上書き保存を確認する際に「いいえ」を選択するともう一度「ファイルの新規保存」ダイアログを表示し、ファイル名の変更等を行えるようにしたいのですが、どの様にすれば良いのでしょうか? 一応、その時のコードを下記に掲載します。 Sheets("Sheet1").Copy Sheets("Sheet1").Cells.Select SaveName = Application.GetSaveAsFilename(filefilter:="Microsoft Office Excelブック,*.xls") If SaveName <> "False" Then 'キャンセルが押下されたならば、一時保存用のExcelファイルを閉じる If Dir(SaveName) <> "" Then If MsgBox("同名ファイルがあります。上書きしますか?", vbYesNo) = vbNo Then ActiveWorkbook.Close End If End If End If ActiveWorkbook.SaveAs Filename:=SaveName, FileFormat:=xlNormal End
- ベストアンサー
- その他MS Office製品
- ExcelVBAで、クローズボタンの処理
お世話になります。 通常、アプリ側ではApplication.DisplayAlerts = Falseにして、 ブックの終了などを制御しているのですが、 Excelのクローズボタンを押して終了するときは、この DisplayAlertsが有効にならないらしく、必ず上書き確認の ダイアログが表示されてしまいます。 これを… 1.上書き保存ダイアログを表示させない(上書き自体させない) 2.Excel本体のクローズボタンを無効にする 3.Excel本体のクローズボタンを非表示にする …などのどれかの方法を教えてください。 尚、現在はブックを閉じる直前で、下記のようなコードで 試みていますが、うまくいきません。 Private Sub Workbook_BeforeClose(Cancel As Boolean) Application.DisplayAlerts = False End Sub 以上、宜しくお願い致します。
- ベストアンサー
- Visual Basic
- ユーザーフォームの切り替えについて・・・
UserForm1とUserForm2の2つのユーザーフォームがあります。 UserForm1の中にあるcommandButton1をクリックすると、UserForm2が表示される仕組みになっています。 (ちなみに、UserForm2にもコマンドボタンがあり、クリックするとUserForm1に戻るようになっています) UserForm1の方に、 Private Sub CommandButton1_Click() UserForm2.Show 0 Unload UserForm1 End Sub UserForm2の方に、 Private Sub CommandButton1_Click() UserForm1.Show 0 Unload UserForm2 End Sub と記述してあります。 ところが、それぞれのユーザーフォームには、閉じると同時にブックが閉じるように Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) ActiveWorkbook.Save 'ブックを保存 ActiveWorkbook.Close 'ブックを閉じる Application.Quit 'excelを終了 End If End Sub というコードを記述しているため、UserForm1からUserForm2へ移るときにブックが閉じてしまいます。 右上の「×」を押したときだけブックを閉じるようにしたいのですが、どういうコードを書いたらいいのですか? 宜しくお願いします。(*´Д`人)
- 締切済み
- Visual Basic
- ExcelVBAで指定時間に自動で終了ボタンを押す
Excel2003を使用しております。 とあるExcelファイルを開くと、フォームを開く設定にして有ります。 朝の8時にフォームの終了ボタンの処理を自動で行いたいので、コードを追加しました Private Sub Workbook_Open() Worksheets("シート1").Activate Range("A1").Select frmテスト.Show vbModeless Application.OnTime TimeValue("08:00:00"), "cmd終了" '←追加したコード End Sub frmテストのフォームにあるコードはこんな感じです Private Sub cmd終了_Click() コードたくさん~ End Sub 朝の8時にfrmテストのフォームにある、終了ボタンのコードを実行させたいのですが、8時になるとエラーが出ます。 マクロ "C\Documents and Setting\ユーザー名\デスクトップ\ファイル名.xls'!cmd終了'が見付かりません。 と、表示されます。 宣言の仕方が悪いのでしょうか?
- 締切済み
- Excel(エクセル)
- ワークシートを上書き保存したい
Excel2003でマクロ初心者です。 以下のコードでシートを上書き保存したいのですが 次々と複写され、上書きされません。どうコードをかえたらよろしいでしょうか。 Private Sub CommandButton10_Click() Dim wb As Workbook On Error Resume Next '開いて作業中の場合。 Set wb = Workbooks("最新表.xls") On Error GoTo 0 If wb Is Nothing Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\表の保存箱\最新表.xls") End If Worksheets("確定").Copy after:=Workbooks("21年計算01.xls").Sheets("総括表") 'Workbooks("最新表.xls").Close End Sub 最新表.xlsは文字通り、最新ですので常に上書きしたいのです。
- ベストアンサー
- Visual Basic
- ExcelVBA:フォームの閉じるボタン「×」を消す方法
ExcelVBAで、ユーザーフォームの閉じるボタン「×」を使用できなくなる方法は以下のコードで教わったのですが「×」自体消す方法ってあるでしょうか? Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then Cancel = 1 End Sub 回答よろしくお願いします。
- 締切済み
- Visual Basic
- 読み取り専用ファイルを上書き保存するには?
作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して 上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。 (1)ThisWorkbookのOpenプロシージャでファイルを読み取り専用状態に設定 (2)ThisWorkbookのBeforeSaveプロシージャで 読み取り専用を解除→上書き保存→読み取り専用状態に再設定 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) '上書き保存モードを解除 Cancel = True '上書きしますか?のコメントを非表示に設定 ActiveWorkbook.Saved = True 'ファイルが読み取り専用であった場合は以下の処理を実行 If ActiveWorkbook.ReadOnly Then 'ブックの読み取り専用設定を解除 ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite, Notify:=True '上書き保存を実行 Application.DisplayAlerts = False Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True Application.DisplayAlerts = True 'ブックを読み取り専用に設定 ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly 'ファイルが読み取り専用でなかった場合は以下の処理を実行 Else '上書き保存を実行 Application.DisplayAlerts = False Application.EnableEvents = False ActiveWorkbook.Save Application.EnableEvents = True Application.DisplayAlerts = True End If End Sub 上記のマクロで上手くいきそうなのですが、下記2点が解決できずに困っております。 (1)上書き保存ボタンをクリックすると下記のメッセージが毎回表示されてしまいます。 『読み取り専用です。コピーを保存するには名前を付けて保存して下さい。』 OKボタンをクリックしたりEscやEnterキーを押下さえすればこの警告メッセージを回避でき 以後は思った通りの処理を行えるのですが、できればこのメッセージを表示したくない。 (2)上書き保存のために読み取り専用を解除した際、他のオペレーターがエクセル起動中、 または上書き保存中であった場合、エラーが発生してしまうことと思われます。 この問題の解決策をご存知の方、是非教えて下さいますよう宜しくお願いします。 当初は共有ブックとしての運用の方向で進めていたのですが、既に2人のオペレーターが ファイルにアクセスしている状態で、3人目のオペレーターがファイルを開くと読み取り専用と なってしまったり、保存時に時間がかかり過ぎたり、保存時のエラーが頻繁に発生したりといった 状況でしたので共有ブックとしての運用は諦めました。(シート50枚、ファイルサイズ3.5MB程度) 使用PCはXPでExcel2003です。以上、宜しくお願いします。
- ベストアンサー
- Visual Basic
- VBA ユーザーフォームのコードについて
下記の2つのコードの意味について教えて下さい。 Private Sub CommandButton1_Click() If ComboBox1 = "" Then ComboBox1.SetFocus・・・・・1 Exit Sub End If Application.Run (ComboBox1.List(ComboBox1.ListIndex))・・・2 End Sub 1と2がわかりません。 Private Sub UserForm_Initialize() TB = Array("マクロ1", "マクロ2", "マクロ3") Me.ComboBox1.List = TB End Sub 「Private Sub UserForm_Initialize()」と「Array」がわかりません。 よろしくお願いします。
- ベストアンサー
- Visual Basic
- Excel VBA ブックが閉じれない
Excel2016を使用してVBAを使用しています。 VBA初心者ですが、よろしくお願いします。 質問内容は以下になります。 EXCEL起動と同時にUserFormを表示させ、UserForm上のコマンドボタンから ダイアログボックスを表示し、他ブックを開く処理なのですが、 他ブックを開くまでは問題ないのですが、他ブックが閉じれない状態になります。 Private Sub Workbook_Open() UserForm1.Show End Sub Private Sub UserForm_Initialize() 各種処理 End Sub Private Sub CommandButton1_Click() Dim OpenFileName As String SetCurrentDirectory (Worksheets(1).Cells(11, 3)) OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") Workbooks.Open OpenFileName End Sub UserFormを閉じると開いたブックも閉じることが可能です。 タスクマネージャーから強制的に終了しようとすると、以下メッセージが出ます。 ”開いているダイアログボックスがあるため、Microsoft Excel を終了できません。[OK]をクリックしてから、Microsoft Excelに切り替えてダイアログを閉じて下さい。" UserFormを閉じないで他ブックを閉じるには、どうすれば宜しいでしょうか。 申し訳ございませんがご教授下さい、よろしくお願いいたします。
- 締切済み
- Excel(エクセル)
- Excelでのエラー
こんにちわ。 今、以下のようなコードを実行した際に、エラーがでてしまい困っています。 ************************************************** Private Sub CommandButton3_Click() '再計算を自動に設定 With Application .Calculation = xlCalculationAutomatic .MaxChange = 0.001 End With ActiveWorkbook.PrecisionAsDisplayed = False UserForm4.Hide UserForm3.Show End Sub ************************************************* (この処理の前には、手動計算に設定しています。) このコードでExcel2000では、問題なく処理がされるのですが、 Excel97では、 「Calculationメソッドは失敗しました。"_Application"オブジェクト」 というようなエラーが出ます。 コード的にはExcel2000で問題なく動いているので、 大丈夫だと思うのですが、Excel97でオブジェクトの指定の仕方や、自動計算のメソッドに上記コードだと問題があるのでしょうか? どなたかわかる方、回答をお願い致します。
- ベストアンサー
- その他(プログラミング・開発)
- 中学生のビオラ演奏者が、肩当てが合わずに辛い思いをしています。演奏会で左手が燃えるように痛み、肩こりもひどくなるため困っています。肩当てが外れたり傷だらけになることもあり、演奏ができずに困っています。早急に肩当てを合わせる方法を教えてほしいとのことです。
- ビオラを演奏している中学生が肩当ての問題で困っています。演奏会で左手が痛み、肩こりがひどいため日常生活にも影響があります。また、演奏会のたびに肩当てが外れたり傷だらけになるため、状況が改善したいと考えています。肩当てを早急に合わせる方法を教えていただきたいとのことです。
- 中学生のビオラ演奏者が肩当ての問題で困っています。演奏中に左手が痛み、肩こりもひどくなります。肩当てが合わずに外れたり傷だらけになることもあり、演奏の妨げになっています。演奏会が迫っており、早急に肩当てを合わせる方法を知りたいとのことです。
お礼
教えていただいたコードを元に、再度作成してみました。 やはりUnloadMeの前に保存しないとエラーが発生することがあるみたいです。 先に保存してからUnloadMeを行うことでエラーを回避することができました。 色々とありがとうございました。 また何かありましたらよろしくお願いいたします。