• 締切済み

xlsmとxlsのマクロについて

こんにちは 今まで動いていたxlsのマクロをxlsmに バージョンアップさせたところ不具合が起きましたので質問させていただきます。 ファイルの概要(すべてマクロによる処理) (1) ファイルを開いたときに,読み取り専用で開く   ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly (2) シートの特定の箇所を変更 (3) 読み取り専用を解除し上書き保存   ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite   ActiveWorkbook.Save xlsmのファイルでは読み取り専用を解除すると, 変更されたファイルというボックスが表示されます。 'ファイル名'を変更しました。 別の人も変更を加えました。どのように処理しますか。 破棄 保存 キャンセル どのようにマクロを設定すればこのボックスを表示せず, 上書き保存をすることができますでしょうか。 よろしくお願いします。

みんなの回答

回答No.1

こんにちは。 全体としてどういったことを意図されてのご質問なのか、 こちらの理解が至っている訳ではありませんので、 部分的な要求に一般論としてお応えするだけで、 提示するものが適切な解決策となり得るか確証は持てていませんが。 > どのようにマクロを設定すればこのボックスを表示せず, > 上書き保存をすることができますでしょうか。 部分的な答えとしては、 >  ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite >  ActiveWorkbook.Save を   ActiveWorkbook.Saved = True   ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite   ActiveWorkbook.Save のように一行追加すればダイアログは表示されずに上書きができます。 もし、何か不足がある場合は  ActiveWorkbookとは、他ブックのことなのか/自ブックのことなのか  上書き保存した後のブックはどうする(閉じる/読み取り専用に戻す)のか といった情報と共に一連の処理全体が具体的にイメージできる内容で 補足欄にでも書いてみて下さい。 とりあえず以上です。

関連するQ&A

  • 読み取り専用ファイルを上書き保存するには?

    作業中は常に読み取り専用状態にしておき、保存の時にだけ読み取り専用の属性を解除して 上書き保存し、上書き保存が終了次第、即座に読み取り専用状態に戻す運用を考えております。 (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です。以上、宜しくお願いします。

  • Excel マクロのsaveasでファイル保存の方法で教えて下さい

    Excel2003で、USBメモリ上の2つのファイル(マクロを保存したmacro.xls及び作業を行うsagyo.xls)を開き、マクロをかけて、最後にxlsファイル形式で上書き保存したいのですが、 (1)ActiveWorkbook.Save で、上書き保存を行うと、なぜかUSBメモリ上にhtmlファイル保存されてしまいます。このため、xlsファイル形式保存をあえて明示し、saveasの既定値であるxlWorkbookNormalを指定し、 (2)ActiveWorkbook.SaveAs , FileFormat:=xlWorkbookNormal とすると、(カレントフォルダである)マイドキュメントに保存されてしまいます。 Q1.(1)のようになる原因は何でしょうか? Q2.USBメモリは、他のPC環境でも使うので、「saveas "F:\sagyo.xls"」などとドライブ指定せずに使いたいのですが、USBメモリ上に上書き保存するマクロの書き方はないでしょうか?

  • マクロVBA特定フォルダーに次々に自動保存する方法

    マクロ初心者です。教えて下さい。 ループでお客様のコードが入力されている限りデータを作成するマクロを作っています。 現在の状態は いちいちファイルを付けて保存のメッセージボックスで「保存」としなければなりません。 AAAのフォルダーに作成されたデータを次々に保存していくにはどうしたら良いですか? (メッセージBOXを出さずに) マクロ実行したら、何もしなくてもAAAフォルダーに全て保存されている状態にしたいです。 宜しくお願い致します。 '名前を付け保存するファイル名の初期設定 Dim Save_File, Save_Filename As String Save_Filename = Sheets("企業別金額サマリ").Range("A3").Value & " 販売実績(5月).xls" '「名前を付けて保存する」ダイアログボックスの表示 Save_File = Application.GetSaveAsFilename(Save_Filename, _ FileFilter:="Excelファイル,*.xls,すべてのファイル,*.*") '名前を付けて保存する ActiveWorkbook.SaveAs Filename:= _ Save_File, FileFormat:=xlNormal, _ Password:="mpd", WriteResPassword:="", ReadOnlyRecommended:=False, _ CreateBackup:=False

  • Excel2010のマクロについて教えてください。

    今下記のマクロ Sub SHUURYOU() ActiveWorkbook.Save Application.Quit End Sub をabc.xlsmと言うシートに書き込みボタンに貼り付けました。 又他のBookにあるdef.xlsmと言うシートにも貼り付けました。 それぞれ単独で開き書き込みをしてマクロボタンを押せば保存して終了します。 しかしabc.xlsmとdef.xlsmが同時に開いていると一方のマクロを実行すると両方ともクローズしてしまいます。 このマクロを単独のシート(book)だけに有効にするにはどのようにマクロを書けばよいのでしょうか。 教えてください。

  • エクセルのマクロで保存して終了が出来ない

     あるエクセルファイルにて、VBAで Sub 保存して終了() ActiveWorkbook.Save ActiveWorkbook.close End Sub  というマクロを作成したのですが、1回目は正常に動いたのですが次からは、そのマクロを動かしても画面が一瞬点滅するだけで、上書き保存も終了もしません。  それで、ファイルを別の名前をつけて保存してその、別の名前で保存したファイルで、また上のマクロを動かすと1回目は正常に動くのですが、やはり次に開くと動かなくなります。  因みに他のマクロは正常に動作し、この保存して終了させるマクロだけが変なのです。  マクロの書き方を変えて以下のようにしてもだめでした。 Workbooks("ナントカ.xls").Close savechanges:=True  やはり、何回書き方を変えても保存して終了させることだけが出来ません。普通にマクロを使用せず手動ですることは出来るのですが…。  分かりにくい説明ですみませんが、よろしくお願いします。

  • 開いているエクセルを上書き保存するマクロがしりたいのですが

    開いているエクセルを上書き保存するマクロがしりたいのですが 単純に ActiveWorkbook.Save ActiveWorkbook.Close では ウィンドウだけ閉じてエクセルの画面は残ってしまいます  どうしたら 全て閉じるのか知りたいのですが、よろしくお願いします。

  • マクロExcel2003日付を付けてファイルを保存

    Excel2003でマクロを利用して、日付を付けた形でファイルを保存するようにしたいです。 条件としては、 (1)ファイルをz:\に「【ここに日付を八桁で保存】File1.xls」とする 例えば、20111127File1.xls (2)上書きする場合も、確認をせずに強制的に保存 (3)保存が終わったら、強制的にExcel2003を終了する という具合に書きたいです。 マクロの保存でやってみてわかっている所まで書きました。 Sub SaveEnd() ActiveWorkbook.SaveAs Filename:="Z:\【????】file1.xls", FileFormat:=xlNormal   【上書き保存で、確認をしない】   【Excel2003の強制終了】 End Sub どのように調べれば良いかも含めて、ご指導をいただければ幸いです。

  • Excel xlsmをxlsxに変換

    お世話になります。 Excel2010 マクロ付きファイル(xlsm)を、設定変更等によってマクロを残したまま xlsxで保存する方法はありますでしょうか。

  • 自動で.xlsを閉じて指定フォルダに移動させたい

    開いているエクセルファイルが多数あるのですが、今アクティブになっているファイルだけを、上書き保存→閉じる→指定したフォルダに移動までを自動で行なわせたいです。 ・上書き保存はマクロの記憶でできるのですが、閉じるをしてしまうとマクロを終了できない、指定したフォルダに移動はマクロではできなく、教えて下さいませ。ファイルの移動は、名前を付けて保存ではなく、そのファイル自体を移動させたいです。 移動させたいファイルは決まってなくて、その都度変わります。 Sub Macro1() ActiveWorkbook.Save End Sub ・現時点、開いているファイルの保存場所 C:\Documents and Settings\aaa\デスクトップ\作業用 ・移動させたいフォルダ C:\Documents and Settings\aaa\デスクトップ\作業用\保存用

  • ワークブックに名前をつけて保存するマクロ

    教えてください!! ワークブックで名前をつけて保存するときのマクロなんですが、 自動記録すると下記のように記述されています。 ActiveWorkbook.SaveAs Filename:="C:\○○○\○○○\□□□□□.xls" この□□□□□の部分はインプットボックスを表示させたいのですが、 こういうマクロを組むことはできますか?

専門家に質問してみよう