VBで操作するには?

解決


アリシア  2005-12-21 10:29:13  No: 93353

VBでEXCELを操作しているのですが、Selection.ClearContentsを行うと、1回目は正しく実行されるのですが、一度EXCELを閉じて、同じ操作を行うと「オブジェクト変数またはwithブロック変数が定義されていません」というエラーがでるのですが、どのようにすればエラーが出ることなく実行されますか?


ガッ  2005-12-21 11:21:50  No: 93354

オブジェクト変数にオブジェクトを参照させてください…?
もしくは、何も参照していないオブジェクト変数に対して"."演算をつかわないでください…?
たとえば、次のコードでもこの例外を発声させることが出来ます。
dim x as collection
msgbox x.count

色々原因ありすぎて何もいえませんが、とりあえずデバッグしてください。
あと、環境も明示してください。


魔界の仮面弁士  2005-12-21 11:47:44  No: 93355

Selection や Active系プロパティは、可能な限り使わないようにしましょう。
今回の場合は、RangeオブジェクトのClearContentsメソッドで対処できませんか?


どうしても Selection を使いたいのであれば、
  Selection.ClearContents
ではなく、
  Dim X1 As Excel.Application
      :
      :
  X1.Selection.ClearContents
のように、「どのオブジェクトのSelectionプロパティなのか」を
はっきりさせる必要があります。


アリシア  2005-12-21 11:56:19  No: 93356

環境VB6.0  Windows2000

Dim xl As Object                
Dim wb As Object                
Dim ws As Object
として
Set xl = CreateObject("Excel.Application")  
Set wb = xl.Workbooks.Open("\\Cads036\sotuken\資格一覧全員分.xls")
Set ws = wb.Worksheets("印刷シート")
このようにオブジェクトは参照させているのですが。


魔界の仮面弁士  2005-12-21 12:28:36  No: 93357

レイトバインド主体のコーディングですね。

もしもExcelを参照設定していたら、それを外してみてください。
参照設定を外すとエラーが出るようであれば、
コーディングミスがある可能性があります。

(その代わり、参照設定が無い場合、Const 等は自分で定義しなければなりませんが)


アリシア  2005-12-21 13:08:02  No: 93358

無事に実行できました。
ガッさん、魔界の仮面弁士さん、ありがとうございました。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加