エラーを回避するには?

解決


トゥルー  2005-06-24 07:36:38  No: 123001

こんばんは

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 19:55:31  No: 123002

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

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


トゥルー  2005-06-24 20:09:39  No: 123003

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

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

HelpMe


ねろ  2005-06-24 20:54:01  No: 123004

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


あ〜  2005-06-24 20:56:19  No: 123005

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

>     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 22:27:19  No: 123006

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

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

>      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-25 00:19:43  No: 123007

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


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

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






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