Excel2003のVBAを使い、以下のようなことをやろうとしています。

・CSVファイルを読み込む。
・CSVファイルの1レコードを1シートに展開する。その際、原本のシートがあり、それをコピーして展開する。
このコピー結果が256シートを超えることはない。
・全レコードの展開が終わったら、生成したシートを別ブックへ移動させる。移動後、生成したシートは削除してしまう。
・別のCSVファイルを読み込み、同様の処理を行う。

この時、最初のCSVファイルから生成されたシート数がクリアされず、次のCSVファイルへ引き継がれているようで、
2本のシート数合計が256を超えるとエラーになります。

 例)1本目のCSVファイルから生成されたシート数 178シート
   2本目のCSVファイルから生成されたシート数 145シート ←このシートをコピーしている途中で256を超えるとエラーになる。


Q このシート数カウンタ(?)を意図的にクリアする方法がありますでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

>この時、最初のCSVファイルから生成されたシート数がクリアされず、


>次のCSVファイルへ引き継がれているようで
シートの実態はクリアされていて、内部のカウンタだけ残っているということでしょうか?
別の内部カウンタが存在するのか不明ですが、シートをクリアした時にWorksheets.countが正しい値を示さないということでしょうか?

どのようにしてクリアなさっているのか不明ですが、クリアの方法を変えるなどで、正しく認識されるようにできないのかなぁ?
あるいは、VBA側でシート数を数える変数を作成しておいて、その変数で制御するようにすれば256シートを超えなくても済みそうですが…
(Worksheets(1)~Worksheets(256))
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

クリア時にWorksheets.countを見たのですが、
正しい値を示しています。

お礼日時:2009/05/29 18:23

No2です。



>クリア時にWorksheets.countを見たのですが、
>正しい値を示しています。
それなら、シートの数が制限を越えることは無いと思いますが??

ひょっとして値だけクリアして、新しいシートをさらに150シート作成しようとしているのでしょうか?
もしそうであるなら、シート数がオーバーするのは当然です。
以下のいずれかの方法でいけるでしょう。

1)クリアするときにシートを削除して(Worksheets.count=1になる)、
 次のブックの処理を始める

2)わざわざシートを削除する必要はないので、1ブックの処理は既存の
 シート1から始めて、シートがないときに追加作成するようにする。
 (無条件でシートを作成するようなことはしない)

3)No3様のご提案のように、1ブックの処理に新しいブックを当てて、次の
 処理の前にオールクリア(=次はまた新しいブックで処理)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
お礼が遅くなり申し訳ございません。

その後、教えていただいた方法等を色々試したのですが、
マイクロソフトのサポートオンラインに解決方法がありました。
http://support.microsoft.com/kb/210684/ja

教えていただいた皆様に改めて御礼申し上げます。

お礼日時:2009/06/05 15:05

細かい事はわからないのですが、


Sub sample()
Dim genponBook As Workbook '原本ブック
Dim kekkaBook As Workbook '結果ブック
Set genponBook = Workbook.Add '原本ブックを作る
Set kekkaBook = Workbook.Add '結果ブックを作る
'処理
genponBook.Close SaveChanges:=False '原本ブックを保存せずに閉じる
kekkaBook.Close SaveChanges:=False '結果ブックを保存せずに閉じる
End Sub
とすれば、各々256を超えないのでは?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

なるほど、別ブックにで処理するのですか。
ちょっと試してみます。

お礼日時:2009/05/29 18:26

シート数に関する変数にByte型を使用していませんか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

残念ながら、シート数に関する変数は使っていません。

お礼日時:2009/05/29 18:21

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


人気Q&Aランキング