EXCEL共有Bookにマクロを組み動作させると不具合が起こる

このQ&Aのポイント
  • EXCELの共有bookにマクロを組んでいます。マクロはPrivate Sub Worksheet_Change(ByVal Target As Range)でセルに入力されると自動的に他のマクロが走り保存する使用で、4名~10名で頻繁に変更されます。その際に突然EXCELファイルの拡張子が『XLS』から『xls~RF******.tmp 』と変わってしまいます。
  • 保存しようとしても既に元の『XLS』ファイルと拡張子が変わっているため関連性がなくなり保存できなくなります。その後全ての人に一旦共有ファイルを閉じてもらい再度立ち上げると、ファイルがロックされています解除するか?などと質問してきて『はい』を選び再度保存をかけて初めて使用できるようになります。
  • マクロをあまり組んでいないファイルではこのような事は発生しません。どなたか経験のある方はいらっしゃいますか?
回答を見る
  • ベストアンサー

EXCEL 共有Bookにマクロを組み動作させると不具合が起こる

EXCELの共有bookについて質問させていただきます。 共有BOOKにマクロを組んでいます。マクロはPrivate Sub Worksheet_Change(ByVal Target As Range)でセルに入力されると自動的に他のマクロが走り保存する使用で、4名~10名で頻繁に変更されます。その際に突然EXCELファイルの拡張子が『XLS』から『xls~RF******.tmp 』と変わってしまいます。保存しようとしても既に元の『XLS』ファイルと拡張子が変わっているため関連性がなくなり保存できなくなります。その後全ての人に一旦共有ファイルを閉じてもらい再度立ち上げると、ファイルがロックされています解除するか?などと質問してきて『はい』を選び再度保存をかけて初めて使用できるようになります。マクロをあまり組んでいないファイルではこのような事は発生しません。どなたか経験のある方はいらっしゃいますか?

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

  • ベストアンサー
  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.3

はい。訂正のコードをActiveworkbook.Saveに置き換えて使用して下さい。 ブックのパスはThisWorkbook.path & "\" & ThisWorkbook.Nameで得られる文字列になります。 リスクとしては、保存中はファイルの属性が隠しファイルとなるので Windowsの設定で隠しファイルを表示できる設定にしておかないと、 そのブックがあるフォルダをエクスプローラで参照したときに、ファイルが消えたり現れたりするように見えるところでしょうか。 この点が無理なら、"現在は保存中だよ"という意味を示す一時ファイルを作って、同じように一時ファイルが存在する間は保存しないというループを回すとかですかね。 変更を入れるたびにリアルタイムに反映したいという意向からこのような動作をさせていると思います。 私はそれほど知識がありませんが、Accessを使ってデータベースファイル(mdb)に対して随時書き込みを行うと同じような運用が可能かと思います。 色々勝手が違うと思いますけどね。

FUKUYAMA28
質問者

お礼

ご親切にありがとうございます。Activeworkbook.Saveに置き換えるとうまく保存できています。しかし自宅PCはスタンドアロンのため共有での試験が行えていません。現在EXCELファイルが完成次第試してみたいと思います。連日初心者の私にお付き合いくださいまして本当にありがとうございました。

その他の回答 (2)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.2

訂正です。自ブックの名前を変更するのは無理でしたね。。。 保存中は属性を隠しファイルに変更して、他のブックは そのブックが隠しファイルである間はWaitするという手段の方がいいかもしれません。 Do 'ブックが隠しファイルである間はWaitする If (GetAttr(ブックのパス) And vbHidden) <> vbHidden Then Exit Do End If Loop '隠しファイルにする SetAttr ブックのパス, vbHidden   '保存する ThisWorkbook.Save '保存が終わったら普通のファイルに戻す SetAttr ブックのパス, vbNormal

FUKUYAMA28
質問者

補足

ご回答ありがとうございます。ご察しの通り本日も保存の際に発生してしまいました。他の人とタイミングが合うと必ず発生してしまいます。質問ですが訂正のマクロは『ActiveWorkbook.Save』で単純にSaveを行っているのですが、その命令文の部分に置き換えて使用したらいいのでしょうか?(マクロはいつもブロクなどを確認して、親切にお答えいただいている方のマクロを参考に作成しているため基本的な部分もあまり理解できていない初心者です。)

  • kenpon24
  • ベストアンサー率64% (66/102)
回答No.1

その現象に経験があるわけではありませんが・・・推測です。 デッドロックが発生しているのでしょう。 共有ブックではその辺を考慮して保存してくれるのかもしれませんが、 VBAによるブックの保存ではロック状態を考慮できないのかもしれません。 (エクセルで普通に上書き保存するときは一時ファイルを作るのに対し、Saveメソッドで保存すると一時ファイルは作らないみたいですしね。) マクロがたくさんあるブックに限って起こるのはよくわかりませんが・・・ この場合は、事前にロックされているかを確認できればいいと思います。 Saveメソッド実行前に、Nameステートメントで名前を変えてみるという手があります。 Nameステートメントは名前を変更できないとエラーが返ってきますので、 On Errorで飛ばして名前変更が成功するまでResumeすればロックの状態を調べることができるかなと思います。 On Error Goto NameErr Name ブックのパス as ブックのパス '同じ名前に変更してみる On Error goto 0 ブック.Save exit sub :NameErr resume end sub この方法では完全にデッドロックを0にできるわけではないかもしれませんがね・・・ お試しください m(_ _)m

関連するQ&A

  • エクセルの保存について

    どうしてこのようになったのかわからないのですが・・・。 ここ数日の間にどこか触ったのかもしれません・・・。 OSはXPを使っています。 エクセルは2003を使っています。 新規で作成して保存は問題ないのですが、 すでにファイルがあり上書き保存をすると 【ファイル名.xls~RF2950a9.TMP】・【ファイル名.xls~RF29df9a.TMP】 拡張子の後にこのようなものが付いてTMPファイルとして別にファイルができます。 そのTMPファイルを開くと上書き保存される前のが出てきます。 少し前まで出なかったんですが・・・。 これをなくしたいのですがどうしたらいいのでしょうか? どなたか教えてください。 宜しくお願いします。m(_ _;)m

  • 共有された作業でいい方法はないですか?

    仕事で、情報共有する必要があり、頻繁に更新される情報を共有します。現在EXCELの共有機能にマクロを入れて8名ほどで、一つの共有ファイルの書き込みを行うのですが、問題が発生してます。どなたかいい知恵をいただけませんか? その問題とは、マクロでAUTOSAVEを行った際に共有EXCELファイルの拡張子が『.XLS』⇒『.XLS~000000TMP』という名称のファイルに突然変わってしまうことで、ファイルの整合性がなくなり、ファイルが見つからないといったようなエラーが発生します。この内容は複数の人間が同時にマクロでAUTOSAVEを行った場合に発生します。現在は以前にこのサイトで教えていただいた保存中という名称のTXTファイルを作成し次のようなマクロを実行させ、同時に保存するという行為をなくすようにしてますが、頻度は少なくなったのですが、一日に数回ファイルの拡張子がおかしくなります。その教えていただいたマクロの実行内容⇒『保存中というTXTファイルがある間は保存をWAITする。保存中という名称のTXTファイルを作成し、保存を行う。保存中というファイルを消去する。』長くなりましたがここで質問です。私が行おうとしている内容は共有BOOKでは無理があるのでしょうか?無理がある場合はこのような、情報共有の更新が頻繁に行われる内容はEXCELで行う場合はどのような方法があるのでしょうか?どなたかお助けください。

  • エクセルのTMPファイルが消えない。

    エクセルを上書き保存したあとに、フォルダーにTMPファイルがふえまてきえません。 どんどん増えるので困っています。 エクセルファイル名.xls~RF2a2a071.TMP エクセルファイル名.xls~RF29a2acf.TMP エクセルファイル名.xls~RF29fe01d.TMP ネットで調べていると、ウイルスバスターの影響とかあるのですが、当方はウイルスバスターは使用していません。マカフィーを使用しています。 どのような対策をすればいいのでしょうか。ご存知の方お願いします。

  • エクセル2007のマクロのブックについて

    エクセル2007を現在使用しております。 その中のファイルで、97-2003の保存形式(xls)で使用していたマクロのブックがあります。 そのブックを保存形式はそのままで、名前だけを変更し登録しました。 すると、セキュリティの警告で、マクロが無効にされましたと表示され、 現在その都度有効に設定している状態です。 ブックの名前を変更するとマクロは無効になるのでしょうか? 原因を教えて下さい。 また、このブックだけを常に有効にする設定もあれば、 その方法もご教授下さい、お願いいたします。

  • エクセル2007マクロはブック保護されていると使えない!?

    先日 http://odn.okwave.jp/qa3870947.html でも質問しましたが、エクセル2007では、マクロを記述したエクセルのファイル(拡張子.xlsm)は、パスワードを設定したブック保護がされているとマクロが実行されません。 最初は原因がわからず途方にくれていましたが マイクロソフトのサポートオンラインで http://support.microsoft.com/kb/927150/ja http://support.microsoft.com/kb/928613/ja の記述をみつけ、やっと原因がわかりました。 対策として Microsoft Antivirus のアプリケーション プログラミング インターフェイス を入れろとか、97-2003形式(拡張子.xls)で保存しろとか書いてありますが、この設定はおかしいのではないでしょうか? 暗号化といってもただの「ブック保護」で、VBEの方の保護の有無は無関係です。 しかも97-2003形式(拡張子.xls)ならOKで2007マクロ有効ファイル(拡張子.xlsm)はダメだなんて理屈に合いません。といって97-2003形式でも無効にされたら手の打ちようがなくなってもっとこまってしまいますが。 なぜマイクロソフトがこんな設定にしたのか、お分かりになる方いらっしゃいますか?

  • Excel>マクロを使っていないはずなのにマクロを有効にするかどうか聞かれてしまう

    こんにちはtmgmです。 Excelについての質問です。Excelのブックを開くとマクロが有効かどうか毎度聞いてきます。作業としては次のような手順を踏みました。 ------------------------- (1)Book1.xlsにマクロを作成し、保存して閉じる (2)再度Book1.xlsを開き、マクロが不要になったので、コード編集画面を開き、モジュールの解放後、保存(マクロが割り当てられていたボタンも消去) (3)改めてBook1.xlsを開くと、「マクロを有効にするかどうか聞いてくる」(メッセージからも判るとおりセキュリティは中にしています。) ------------------------- 毎回マクロが有効かきかれなくするにはどうすればよろしいでしょうか?モジュールの解放だけではだめでしょうか?お分かりになる方、ご返答宜しく御願いします。

  • 2つのマクロを挿入すると動作せず

    現在、C10に値が入力されるとG4に発行日が表示される 下記のマクロを入力しています。 1 発行日の日付 Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub この上のマクロのみは上手く作動しています。 ファイル名を自動で保存するために下記のマクロをしたいので追加しました。 2 ファイル名の自動保存   Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If End Sub 3  上記の1+2で下記の如くし、いろいろトライをしていますが 上手くゆきません。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 1 And Target.Column = 1 Then ActiveSheet.Name = Target.Value ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Target.Value End If If Target.Address = "$C$10" Then Target.Offset(-6, 2).Value = Date End If End Sub ブック内は次のようなファイルです。 Sheet1(納品請求書1)~Sheet3(納品請求書3) Sheet4(月請求書) Sheet5(顧客登録) Sheet6(設定) Sheet7(領収書) Sheet8(file)  ここのA1に保存したいファイル名を入れています。 上手く表示されません。 困っています。 ここでご教授いただきたいのは 2のみのマクロだと問題なく「ファイル名とシート名」が自動的に表示され保存ができます。 私のやり方に何か問題があると思います。 上記の1(発行日の日付け)+2(ファイル名の自動保存)したときにはうまくいかず何かいい方法がないでしょうか。 お知恵をお貸し下さい。

  • ブックの共有をしているexcelファイルの複製

    ブックの共有を設定しているbook1.xlsというexcelファイルがあります。 ブックの共有を行なっているとだんだんデータサイズが肥大化してくるので、その対策として 【1】"book1.xls"のシート単位で全て新しい"book2.xls"にコピーする。 【2】"book1.xls"を別のフォルダへ移動。 【3】"book2.xls"の名前を"book1.xls"に変え、ブックの共有設定を行う。 ということをしています。 これらの作業を自動で行えたらと思うのですが、 タスクスケジューラー?.batファイル?VBA?など、何をどう組み合わせたらよいのかがよくわかりません。 アドバイスよろしくお願いします。

  • Excel 2007: マクロブックをXLSTARTに入れると挙動がおかしくなる?

    いつもお世話になります。 マクロの配布を容易にするため、ブックにマクロを添付して、  C:\Documents and Settings\ユーザー名\   Application Data\Microsoft\Excel\XLSTART に置いてください、と言おうと思っているんですが、これに関連して以下のようなことが起きます。 (1)個人用マクロブックを作るとExcelが一発で閉じなくなる Excelでマクロを作って、個人用マクロブックに保存すると、以下のブックができる。  C:\Documents and Settings\ユーザー名\   Application Data\Microsoft\Excel\XLSTART\PERSONAL.XLSB このファイルができると、以下のように挙動が変わる。 1) 適当なブックをダブルクリックすると、Excelが起動し、そのブックが開く。 2) ウィンドウ右上端の[X]ボタンをクリックしてExcelを閉じようとすると、ブックだけが閉じて、Excelは終了しない<=ここが問題 3) もう1回[X]ボタンをクリックすると、Excelは終了する (2)任意のマクロ付きブックをXLSTARTに入れると、新規文書が開かなくなる Excelでマクロを作って、任意のブックに保存する。 Excel 2007で使う人と、2003で使う人がいるので、xlsで保存する。 ブックを非表示にして、XLSTARTディレクトリに入れると、個人用マクロブック同様にExcel起動時に開かれるので、マクロが使える。 こうすると、上の(1)の現象に加えて、さらに、以下の現象が発生する。 1) Excelを起動すると、通常は白紙の新規ブックが作成されるが、なぜか作成されず、Excelのみが起動される。 以上です。 任意のマクロブックをXLSTARTに入れながら、起動時に白紙のブックが開き、[X]クリックでExcelが一発で終了する方法はあるでしょうか。 よろしくお願いいたします。

  • アクティブなブックのマクロの実行について

    現在使用しているエクセルのブックがあり、ブック名はA(Ver1.0)とします。 このブックにApplication.Run "'A(Ver1.0).xls'!(1)"…Application.Run "'A(Ver1.0).xls'!(20)"というマクロがあります。 ブック名をマクロ実行前に必ず変更しなければならなくて、そのブック名は毎回違ったものになります。 わざわざブック名を変更せずに、現在開いているブックのマクロを実行するという風にしたいのですがどうしたらいいですか? よろしくお願いします。

専門家に質問してみよう