Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4619 / 13646 ツリー ←次へ | 前へ→

【55522】毎月動いていたVBが突然動かなくなりました。 zaitsev 08/5/9(金) 14:52 質問[未読]
【55524】Re:毎月動いていたVBが突然動かなくなりま... ひげくま 08/5/9(金) 15:56 発言[未読]
【55525】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/9(金) 16:25 発言[未読]
【55526】Re:毎月動いていたVBが突然動かなくなりま... ひげくま 08/5/9(金) 16:44 発言[未読]
【55528】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/9(金) 17:56 発言[未読]
【55529】Re:毎月動いていたVBが突然動かなくなりま... ひげくま 08/5/9(金) 19:04 発言[未読]
【55530】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/9(金) 19:26 発言[未読]
【55532】Re:毎月動いていたVBが突然動かなくなりま... ひげくま 08/5/9(金) 19:42 発言[未読]
【55535】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/9(金) 20:02 発言[未読]
【55536】Re:毎月動いていたVBが突然動かなくなりま... ひげくま 08/5/9(金) 20:11 発言[未読]
【55538】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/9(金) 20:49 お礼[未読]
【55564】Re:毎月動いていたVBが突然動かなくなりま... VBWASURETA 08/5/11(日) 13:08 発言[未読]
【55580】Re:毎月動いていたVBが突然動かなくなりま... zaitsev 08/5/12(月) 9:43 お礼[未読]

【55522】毎月動いていたVBが突然動かなくなりまし...
質問  zaitsev  - 08/5/9(金) 14:52 -

引用なし
パスワード
   データ パラメータ
AA   1
AB   1
AC   2
AD   1
AE   3
AF   2
AG   2
AH   1
(以下続く)

というテーブルのEXCELファイル(仮に"A.xls"というファイルとします)があり、
このファイルにVBモジュールを保存しています。


毎月、データが羅列されているのファイル(こちらを"B.xls"とします)が別に出てくるので、
この"A.xls"のVBを立ち上げて、"B.xls"ファイル上に、

Dim MyThisFile As String
MyThisFile = ThisWorkbook.Name

Range("O1") = "=VLOOKUP(F1," & MyThisFile & "!$A$1:$B$1000,2,FALSE)"

という式を貼り付けて、"B.xls"のF列を参照して、O列にパラメータを引っ張ってくる、
という作業を毎月行っていました。
(この後、この式をデータの最終行までコピーしていました)

先月まではこれで問題なく動いていたのですが、今月突然、

”実行時エラー'1004'
アプリケーション定義またはオブジェクト定義のエラーです”

と出て動かなくなってしまいました。


○VLOOKUP でテーブルにしている "A.xls" の参照方法が、
 ファイル名だけで、シート名を取得していない

○"A.xls" というモジュールのファイルと、
 "B.xls"というデータファイルの両方を立ち上げてVBを走らせる、
 という方法に問題がある

等が考えられますが、
いずれにしても先月までは問題なく動いていたので、
突然動かなくなった理由が皆目検討がつきません。


どなたかご教示頂ければと思います。
よろしくお願いいたします。

【55524】Re:毎月動いていたVBが突然動かなくなり...
発言  ひげくま  - 08/5/9(金) 15:56 -

引用なし
パスワード
   > 先月まではこれで問題なく動いていたのですが、今月突然、
> ”実行時エラー'1004'
> アプリケーション定義またはオブジェクト定義のエラーです”
> と出て動かなくなってしまいました。

VBAのどの命令でこのエラーになりますか?

【55525】Re:毎月動いていたVBが突然動かなくなり...
発言  zaitsev  - 08/5/9(金) 16:25 -

引用なし
パスワード
   ▼ひげくま さん:
>> 先月まではこれで問題なく動いていたのですが、今月突然、
>> ”実行時エラー'1004'
>> アプリケーション定義またはオブジェクト定義のエラーです”
>> と出て動かなくなってしまいました。
>
>VBAのどの命令でこのエラーになりますか?

Range("O1") = "=VLOOKUP(F1," & MyThisFile & "!$A$1:$B$1000,2,FALSE)"

デバッグを押すと、まさにこの式↑がハイライトされます。
この式がエラーを起こしているのだと思いますが、
先月までは普通に動いていただけに謎で仕方がありません。

データファイルの書式も特に変更していません。

【55526】Re:毎月動いていたVBが突然動かなくなり...
発言  ひげくま  - 08/5/9(金) 16:44 -

引用なし
パスワード
   >>VBAのどの命令でこのエラーになりますか?
>
>Range("O1") = "=VLOOKUP(F1," & MyThisFile & "!$A$1:$B$1000,2,FALSE)"
>
>デバッグを押すと、まさにこの式↑がハイライトされます。

残念ですが、私の環境では再現できませんでした。

シート名を指定するとどうなるんでしょうね?

ちなみに、この式(命令)は、ちゃんとコピペしていますか?
Range("O1") のあとが全角スペースになっているのが気になるのですが。

【55528】Re:毎月動いていたVBが突然動かなくなり...
発言  zaitsev  - 08/5/9(金) 17:56 -

引用なし
パスワード
   ▼ひげくま さん:
>ちなみに、この式(命令)は、ちゃんとコピペしていますか?
>Range("O1") のあとが全角スペースになっているのが気になるのですが。

すみません。分かりやすくするために、少し内容を変えた時に、全角スペースが入ってしまったようです。
コードをそのままコピペします。

  Range("O6") = "=VLOOKUP(F6," & MyThisFile & "!$B$2:$F$1000,5,FALSE)"
  Range("O6").Select
  Selection.Copy
  Range(Cells(6, 15), Cells(MyLastRow, 15)).Select
  ActiveSheet.Paste

と、こんな感じです。

シートの指定は、テーブルファイル "B.xls" から、
うまくシート名が取得できなくて、今、苦戦しているところです。

  MyThisSheet = ThisWorksheet.Name

で、「オブジェクトが必要」と出てしまうのですが、
どうしたらよいか教えて頂けないでしょうか。重ね重ねすみません。

【55529】Re:毎月動いていたVBが突然動かなくなり...
発言  ひげくま E-MAIL  - 08/5/9(金) 19:04 -

引用なし
パスワード
   >  MyThisSheet = ThisWorksheet.Name
>
>で、「オブジェクトが必要」と出てしまうのですが、
>どうしたらよいか教えて頂けないでしょうか。重ね重ねすみません。

どんな変数宣言をしていますか?

【55530】Re:毎月動いていたVBが突然動かなくなり...
発言  zaitsev  - 08/5/9(金) 19:26 -

引用なし
パスワード
   ▼ひげくま さん:
>>  MyThisSheet = ThisWorksheet.Name
>>
>>で、「オブジェクトが必要」と出てしまうのですが、
>>どうしたらよいか教えて頂けないでしょうか。重ね重ねすみません。
>
>どんな変数宣言をしていますか?

Dim MyThisSheet As String
Dim MyThisSheet As Worksheet

のどちらでもやってみたのですが、ダメでした。

【55532】Re:毎月動いていたVBが突然動かなくなり...
発言  ひげくま  - 08/5/9(金) 19:42 -

引用なし
パスワード
   ThisWorksheet って何ですか?

【55535】Re:毎月動いていたVBが突然動かなくなり...
発言  zaitsev  - 08/5/9(金) 20:02 -

引用なし
パスワード
   ▼ひげくま さん:
>ThisWorksheet って何ですか?

すみません。
ファイル名を取得するのが、ThisWorkbook なので、
シート名は ThisWorksheet で取得するのかと思い、
ネットで検索したところ、そう言ったコマンド(or 命令文?)は存在するようなので、
使い方が分からないだけかと思っていたのですが、
そもそも、そんなコマンドは存在しないのでしょうか。

本当に素人な発想&発言ですみません。

【55536】Re:毎月動いていたVBが突然動かなくなり...
発言  ひげくま  - 08/5/9(金) 20:11 -

引用なし
パスワード
   >ファイル名を取得するのが、ThisWorkbook なので、
>シート名は ThisWorksheet で取得するのかと思い、
>ネットで検索したところ、そう言ったコマンド(or 命令文?)は存在するようなので、
>使い方が分からないだけかと思っていたのですが、
>そもそも、そんなコマンドは存在しないのでしょうか。

VBEのオブジェクトブラウザでThisWorkbookとThisWorksheetを調べてみてください。

【55538】Re:毎月動いていたVBが突然動かなくなり...
お礼  zaitsev  - 08/5/9(金) 20:49 -

引用なし
パスワード
   ▼ひげくま さん:
>VBEのオブジェクトブラウザでThisWorkbookとThisWorksheetを調べてみてください。

オブジェクトブラウザの存在そのものをよく分かっていませんでした。
ありがとうございます。

また、大元の問題ですが、
どうやら、モジュールを保存しているファイル名に問題があることが分かりました。("(",")"を使用していました)
ただ、先月はそのファイル名でも動いていたので、それが原因であることには納得していないのですが、
とりあえず、ファイル名を変えたところ、問題なく動きました。

どうもお騒がせしてすみませんでした。
いろいろとご回答頂き、大変、勉強になりました。
どうもありがとうございました。

【55564】Re:毎月動いていたVBが突然動かなくなり...
発言  VBWASURETA  - 08/5/11(日) 13:08 -

引用なし
パスワード
   おはようございます。

問題は解決されていますが原因についてちょっと考えて見ました。
ただ、以下の原因は実際動作していたソースコードを触っていない
という場合です。

1.先月から発生当日までにOffice又は、Windowsアップデートを実行された。
2.参照しているシートだけを開き何らかを変更していたために
  関数の結果が見えなくなり参照先が見えなくなった。

※1の場合は結構良く有り得るので注意が要りますよ。


後、自分もよくしていますが、バックアップはこまめに取ると良いですよ。
原本だけでも良いですが動いていたバックアップから動作確認をして
動くのであれば問題シートと比較することも可能です。
又、動かなければ、何らかの環境が変わったことがすぐ調べられますから。

【55580】Re:毎月動いていたVBが突然動かなくなり...
お礼  zaitsev  - 08/5/12(月) 9:43 -

引用なし
パスワード
   ▼VBWASURETA さん:
ソースコードも参照シートも一切の変更はしていません。
Office と Windows のアップデートは、
社内のシステム部門から自動更新を義務付けられているので、その線は当然当たったのですが、
直近1ヶ月で、VBAに影響するアップデートはなかったというシステム部門からの返答でした。
先月の同データのファイルが残っていたので、再度走らせてみたのですが、
こちらも今回は同じ場所でストップしてしまったので、
どこの環境、設定が変わったのか、いまだによく分かりません。

いずれにせよ、バックアップはこまめに取るように心がけます。
アドバイス、どうもありがとうございました。

4619 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free