- ベストアンサー
VBAのコピーメソッドを使い、一時的に256以上のシートを扱うことが可能ですか。
- Excel2003のVBAを使い、CSVファイルのデータを読み込み、1レコードごとに新しいシートに展開する処理を行いたいと思っています。しかし、先に展開したシートの数が256を超えるとエラーが発生してしまいます。このシート数カウンタをクリアする方法はありますか?
- Excel2003のVBAを使用して、CSVファイルのデータを1レコードずつ新しいシートに展開する処理を行っています。ただし、この処理を繰り返していると、展開したシートの数が256を超えるとエラーが発生します。このシート数カウンタをリセットする方法はありますか?
- Excel2003のVBAを利用して、CSVファイルのデータを1シートに1レコードずつ展開する処理を行いたいのですが、展開したシートの数が256を超えるとエラーが発生してしまいます。このシート数カウンタを初期化する方法はありますか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>この時、最初のCSVファイルから生成されたシート数がクリアされず、 >次のCSVファイルへ引き継がれているようで シートの実態はクリアされていて、内部のカウンタだけ残っているということでしょうか? 別の内部カウンタが存在するのか不明ですが、シートをクリアした時にWorksheets.countが正しい値を示さないということでしょうか? どのようにしてクリアなさっているのか不明ですが、クリアの方法を変えるなどで、正しく認識されるようにできないのかなぁ? あるいは、VBA側でシート数を数える変数を作成しておいて、その変数で制御するようにすれば256シートを超えなくても済みそうですが… (Worksheets(1)~Worksheets(256))
その他の回答 (3)
- fujillin
- ベストアンサー率61% (1594/2576)
No2です。 >クリア時にWorksheets.countを見たのですが、 >正しい値を示しています。 それなら、シートの数が制限を越えることは無いと思いますが?? ひょっとして値だけクリアして、新しいシートをさらに150シート作成しようとしているのでしょうか? もしそうであるなら、シート数がオーバーするのは当然です。 以下のいずれかの方法でいけるでしょう。 1)クリアするときにシートを削除して(Worksheets.count=1になる)、 次のブックの処理を始める 2)わざわざシートを削除する必要はないので、1ブックの処理は既存の シート1から始めて、シートがないときに追加作成するようにする。 (無条件でシートを作成するようなことはしない) 3)No3様のご提案のように、1ブックの処理に新しいブックを当てて、次の 処理の前にオールクリア(=次はまた新しいブックで処理)
お礼
ご回答ありがとうございます。 お礼が遅くなり申し訳ございません。 その後、教えていただいた方法等を色々試したのですが、 マイクロソフトのサポートオンラインに解決方法がありました。 http://support.microsoft.com/kb/210684/ja 教えていただいた皆様に改めて御礼申し上げます。
- hotosys
- ベストアンサー率67% (97/143)
細かい事はわからないのですが、 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を超えないのでは?
お礼
ご回答ありがとうございます。 なるほど、別ブックにで処理するのですか。 ちょっと試してみます。
- Sinogi
- ベストアンサー率27% (72/260)
シート数に関する変数にByte型を使用していませんか?
お礼
ご回答ありがとうございます。 残念ながら、シート数に関する変数は使っていません。
お礼
ご回答ありがとうございます。 クリア時にWorksheets.countを見たのですが、 正しい値を示しています。