電子書籍の厳選無料作品が豊富!

プログラミング初心者です。

ExcelVBAマクロの実行時、ある端末では、エラーが出ずに正常に処理を行いますが、
別の端末では、『オブジェクト変数またはWITHブロックが設定されていません』のエラーが出て、処理が実行出来ません。

Excelの環境設定によるものかと考えていますが、原因が分かりません。

対象の2台はいずれも、OS:Windows7 32ビット、Excel2010を使用しています。

A 回答 (2件)

こういう帰納法(多くある現象から集約する)形式では、かなり難しいものがあります。



あまり、こういうことは決まった内容ではないのですが、ご本人の作ったコードでないとついありがちな問題のひとつとして、例えば、私の場合、省メモリで、オブジェクトの設定のオーバーヘッド(Set の設定の時の時間的ロス)を減らすために、グローバル変数にしてしまうのです。

例:
'Module1

Public objWShell As Object   '①
Sub objSetting() '②
 Set objWShell = CreateObject("WScript.Shell") '③
End Sub

'④

'Module2
Sub Test1()
  Dim mPath As String
  mPath = objWShell.SpecialFolders.Item(16)  '16=Documents
  MsgBox mPath
End Sub

こういう場合、コードが正しくても、②を忘れたり、①が落ちていたりすると、そのエラーが出ます。④は、どこか分からないけれども、内在的なエラーを持っている場合、そして何よりも③でオブジェクトが作れない時。

そのエラーが出ます。

この③が問題です。何が原因なのか、ウィルスなのか、取れていないこともあります。また、場合によっては、参照設定で基本になる、Visual Basic, Microsoft Excel, OLE Automation のどれかが落ちていることがあります。人からファイルをもらい受けた時に、発生することがあります。

Office Tanakのは、ほとんどプログラミング・ミスに限ります。
http://officetanaka.net/excel/vba/error/executio …
    • good
    • 0

オブジェクト変数に格納するときのSetステートメントが無いからでしょうね。

ミスにはキリが無いから例だけ。
Target = ActiveSheet ⇒ Set Target = ActiveSheet

オブジェクトを格納していないオブジェクト変数を操作しようとしたときにも発生Targetを何もセットしてないのに
いきなり Target.Name = "xxxxxx"

マクロソースが見えないから、これ以上は解らない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています