ユーザーフォームを設定した後で、次のプログラムを起動するとユーザーフォームを開こうとしても「パスが無効です」とでて使えなくなります。
Public Sub test()
UserForm3.Show
ActiveWorkbook.SaveCopyAs ThisWorkbook.Path & "\バックアップ\" & ActiveWorkbook.Name
UserForm2.Show
Unload UserForm3
Unload UserForm2
End Sub
また、プログラム中にシステムエラーとでたり、「オブジェクトが見つかりません」とでたりします。
いったいなぜなのか。どうすれば回避できるのか教えてください。お願いします
ちなみにプログラムを実行するときはエクセルファイルと同じ階層に「バックアップ」というフォルダを作ってください。
このプログラムを実行した後は保存しないことをお勧めします。
ユーザーフォームが起動できなくなっても責任はとれません。
エクセルは2000 です。
No.3ベストアンサー
- 回答日時:
>私一人だけ対処できても意味がないんですよね・・・
2000SR1が標準の環境という事ですか。
#不具合あるバージョンにサービスパックもあてられない状況で
#ExcelVBAで何かを提供しろと言われたら私だったら躊躇しますけど
#まあ、如何ともし難い状況なのでしょうね。
>コードによる対処をさせたかったんですけれど、どうも無理っぽいですね。
コード全部が提示されたわけじゃないので『無理』と決め付けるのはどうかと。
Appliction.Ontimeを使ってみるという手もあるかもしれません。
SaveCopyAsに問題があるならSaveAsで代替コードを組んでもいいかもしれません。
[CreateBackup プロパティ]を活用した運用に切り替えてもいいかもしれません。
ただ、ThisWorkbookがマクロBookであるという位置づけであれば
本来、バックアップを取る必要があるのかどうか、という意味では
ThisWorkbook以外のActiveなデータブックにだけバックアップ処理するというのは
至極真っ当な『コードによる対処』だと思われますが。
SR-1が標準かどうか確かめるのも大変な環境です。
自分は会社の末端の人間で、確認してくれなんて言えないですし、人によってはエクセル2003の人もいました。
コード全部提示は無理です。かなり長いマクロなんで。
ただ、私の環境では、エクセルファイルの新規作成からokボタンのみのユーザーフォームを三つ作り、質問文本文のコードを入れた所、再現はしましたので、最低限の記述になっていると思います。
ついでに言うと、OKを押したときの処理にme.hideにしたりunload meにするかで微妙にエラーメッセージが違いました。
(システムエラーとでたり、「オブジェクトが見つかりません」とでたり、ときたま、エクセルが強制終了したり)
しかし、この辺のメッセージと処理内容の違いによる相互関係が毎回変わっていたので質問本文には書きませんでしたが・・・
全てのパターンで言えることは、
プログラムを起動した後、ユーザーフォームを開こうとしても「パスが無効です」とでることですね。
恐らく、ユーザーフォームのパスとやらが、バックアップ先のファイルに移行してしまったんではないかと思います。
(ただの推測ですが・・)
なるほど。手はたくさんありそうですね。
色々試してみます。
色々な手法を教えてくだてくださってありがとうございます。
>>ただ、ThisWorkbookがマクロBookであるという位置づけであれば・・・
完全なマクロブックという位置づけにするか、正直どうしようか迷っていました。
今回の件で、マクロブックにしようかなっとという考えを持つようになりました。
良いきっかけだったのかもしれません。
No.2
- 回答日時:
winXP/xl2000sp3,winXP/xl2003sp3
では再現しないですね。
でも取り敢えず簡易なテストなのでFormモジュールの内容によるのかもしれませんが。
>エクセルは2000 です。
ひょっとしてSR-1ですか?
昔、『[XL2000]UserFormオブジェクトでSaveCopyAs後にSaveを使用するとエラー』
http://support.microsoft.com/kb/264712/ja
こういうのがありましたから必要であれば
http://office.microsoft.com/ja-jp/downloads/CD00 …
ここから更新してみてください。
#2000は枯れて安定してるイメージがあって個人的には好きなバージョンなんですが
#残念ながらサポートぎれなのがどうにも..ですね。
返答ありがとうございます
返事遅れてしまい申し訳ありません
エクセルのヴァージョンは 9.0.3812 SR-1
でした。
私一人だけ対処できても意味がないんですよね・・・
複数人数の人に使わせるので・・・
なので、コードによる対処をさせたかったんですけれど、どうも無理っぽいですね。
幸い、本来の使い方では、ActiveWorkbookとThisWorkbookが同じになることはないと思いますので、
ActiveWorkbookとThisWorkbookが同じときは、そのまま処理を終了させるか、バックアップを取らずに進ませるかさせます。
No.1
- 回答日時:
ActiveWorkbookやThisWorkbookはファイルとして存在しているのでしょうか?
SaveCopyAs は一度も保存されていないBookでは動かないようです。
また、一度も保存されていないBookにはPathがありません。
ブレークポイントを設けてPathやNameに希望する値が入っているかを確認してみてください。
この回答への補足
保存しているファイルに行っております。
一つ言い忘れていました。
この現象は
ActiveWorkbookとThisWorkbookが一致するとき
(つまり、マクロが描かれているファイル上で実行)
のみ、発生します。
別のファイルで実行したときは正常に動きました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba Sleep関数について教えてください 1 2023/01/18 10:18
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) VBA シート上にドロップダウンリストを作り、予め指定値をセットしたいのですが 1 2023/03/25 15:15
- Visual Basic(VBA) VBA Bookの表示、非表示 1 2022/09/16 20:44
- Visual Basic(VBA) VBA This Workbookモジュールを別ファイルにコピーする方法 1 2022/09/14 01:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルVBA(実行時エラー438)の対処法を教えてもらえないでしょうか 3 2023/04/22 13:43
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
VBAで外部プログラムを非表示で...
-
プログラミング ソースコード
-
なんかC言語でプログラム書いて...
-
いきなり、count++; とありま...
-
sendkeysにてALT+CTRL+INSERTを...
-
MACで動く実行ファイルをWindow...
-
あるプログラム実行中に別のプ...
-
C言語プログラミングの再帰がい...
-
VB上で実行中の無限ループの止め方
-
C言語でフォルダを開く
-
並列計算をしたときのシステム...
-
プリントスクリーンをプログラ...
-
戻り値をもつアプリケーション
-
会津オンラインジャッジでプロ...
-
ExcelのVBAでX=0〜1の定積分を...
-
system関数を使用してsuコマン...
-
Excel VBA から外部プログラム...
-
Java Autoupdater
-
実行中の実行ファイルの上書き
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Macターミナルで実行中のプログ...
-
なんかC言語でプログラム書いて...
-
プログラミング ソースコード
-
MACで動く実行ファイルをWindow...
-
実行時エラー429
-
Windows10でDOSゲーム
-
VB上で実行中の無限ループの止め方
-
他のPC上にあるexeを、そのP...
-
sendkeysにてALT+CTRL+INSERTを...
-
VBAで外部プログラムを非表示で...
-
システム資源とは?
-
プロセス間通信について
-
アクセス[ファイルを開かずに、...
-
C言語でプログラムを再起動
-
C言語で途中までしか、プログラ...
-
system関数を使用してsuコマン...
-
終了してもプログラムが実行し...
-
PIC のデータEEPROMに書き込み...
-
実行中の実行ファイルの上書き
-
他の実行ファイルを実行するプ...
おすすめ情報