こんばんは
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
仮に65536を65535にしたらどうなりますか?
65535と65536では内部での扱いがかなり変わってくるので
※その他に関しては・・・エクセルとか詳しい人にお任せ
通ってみたさんレスありがとうございます。
>65535と65536では内部での扱いがかなり変わってくるので
実はこの値も変えたりして見ましたが同じエラーでした。
HelpMe
私のWindows2000、Excel2000の環境では全く問題なく動きます。
多分コードの問題ではないのでしょうね。
これって保存はしてるんですか?
> 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行を追加したらどうでしょう。。。
ねろさん、あ〜さんレスありがとうございます。
このコードを間に入れると、
> 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
レスがないようなので、他の掲示版を当たってみます。
書き込んで頂いた方々、ほんとにありがとうございました。
ツイート | ![]() |