エラーを回避するには?

解決


トゥルー  2005-06-23 22:36:38  No: 123001  IP: [192.*.*.*]

こんばんは

VB6でこのようなエクセルファイルを出力する
コードを記述している途中なのですが、

この2行を入れると
     Set myRng = Shc.Range("G2:G65536")
            myRng.Replace "0", "", xlWhole
        
実行したあと、エクセルファイルのプレビューなどのボタンをクリックすると


EXCEL.EXE -アプリケーションエラー

"0x0048003f"の命令が"0x3d3eOdfe"のメモリを参照しました。メモリが"written"に
なることはできませんでした。

プログラムを終了するには[OK]をクリックしてください。
プログラムをデバッグするには[キャンセル]をクリックしてください

のメッセージが出ます。
何故なのでしょうか?
助けてください。

環境
VB6
XP ProSp2


  Dim myExcel As Object
  Dim myBook  As Workbook
  Dim Shc     As Worksheet
  Dim myFile  As String
  Dim myRng   As Range
     
     Set myExcel = CreateObject("Excel.Application")
     
     myExcel.Visible = True
     myExcel.Workbooks.Add
       
     myFile = "C:\テストBook.xls"
     
     Set myBook = GetObject(myFile, "Excel.Sheet")
     
     myBook.Worksheets("cccc").Copy Before:=Worksheets(1)
     myBook.Worksheets("bbbb").Copy Before:=Worksheets(1)
     myBook.Worksheets("aaaa").Copy Before:=Worksheets(1)
     
     Set Shc = myExcel.Worksheets("cccc")
        
     Set myRng = Shc.Range("G2:G65536")
            myRng.Replace "0", "", xlWhole
       
       
      Set myRng = Nothing
      Set myExcel = Nothing
      Set myBook = Nothing
      Set Shc = Nothing

編集 削除
通ってみた  2005-06-24 10:55:31  No: 123002  IP: [192.*.*.*]

仮に65536を65535にしたらどうなりますか?
65535と65536では内部での扱いがかなり変わってくるので

※その他に関しては・・・エクセルとか詳しい人にお任せ

編集 削除
トゥルー  2005-06-24 11:09:39  No: 123003  IP: [192.*.*.*]

通ってみたさんレスありがとうございます。 

>65535と65536では内部での扱いがかなり変わってくるので
実はこの値も変えたりして見ましたが同じエラーでした。

HelpMe

編集 削除
ねろ  2005-06-24 11:54:01  No: 123004  IP: [192.*.*.*]

私のWindows2000、Excel2000の環境では全く問題なく動きます。
多分コードの問題ではないのでしょうね。

編集 削除
あ〜  2005-06-24 11:56:19  No: 123005  IP: [192.*.*.*]

これって保存はしてるんですか?

>     Set myRng = Shc.Range("G2:G65536")
>            myRng.Replace "0", "", xlWhole
     
      myBook.Save
      myBook.Saved = True
      myExcel.Application.Quit
      
>      Set myRng = Nothing
>      Set myExcel = Nothing
>      Set myBook = Nothing
>      Set Shc = Nothing

この3行を追加したらどうでしょう。。。

編集 削除
トゥルー  2005-06-24 13:27:19  No: 123006  IP: [192.*.*.*]

ねろさん、あ〜さんレスありがとうございます。

このコードを間に入れると、

>      myBook.Save
>      myBook.Saved = True
>      myExcel.Application.Quit


Book1への変更を保存しますか?
はい  いいえ  キャンセル

が出て砂時計のまま固まってしまいました。

ちなみにExcen2000を再インストールしてもだめでした。

        For Each myRng In Shc.Range("G2", Shc.Range("G65536").End(xlUp))
           If myRng = "0" Then myRng.ClearContents
        Next myRng

に変えると大丈夫なのですが、原因がわかりません。


もう一つPCがありますので、
環境はXP Pro SP1
VB6 SP6 
Excel 2000

で実行すると、同じエラーが出ます。

どこが悪いのかさっぱりわかりません。

HelpMe

編集 削除
トゥルー  2005-06-24 15:19:43  No: 123007  IP: [192.*.*.*]

レスがないようなので、他の掲示版を当たってみます。
書き込んで頂いた方々、ほんとにありがとうございました。

編集 削除