質問: excel2007でbook間のシート移動をvbaで行うとエラーになる excel vbaで開発されたソフトの改造を行ってますが、excel2007で動作しないマクロがあり困ってます。 <開発環境> ・windowsxp pro sp3 ・celeron 540(1.8ghz) ・メモリ1gb ・excel2007 sp1 (microsoft office2007) 改造元ソフトはoffice2000で開発されており、excel2007で動作するとマクロエラーが発生する処理があります。 因みにまだソフト改造はしてなく、そのままexcel2007で動作させるだけでマクロエラーが発生します。 発生する箇所はvbaで開発されており、下記のコマンドです。 sheets(移動元シート名).move before:=application.workbooks(移動先ブック名).sheets(1) 異常の内容は下記になります。 ------------------------------- ?err.description 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 ?err.number 1004 ------------------------------- 移動元bookは1シート、移動先bookは1シートあります。 これをexcel2000で実行すると正常にシートが移動できます。 (移動元bookのシートがなくなりbookが終了して、移動先bookは2シートになります) excel画面の移動元シートを選択して、右クリックメニューの「移動またはコピー」で移動先ブックを指定して移動すると 「移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。」 とvbaから実行した時と同じ内容のエラーダイアログが表示されました。 (excel2000では手動でも移動できました) excel2007では1シートで構成されたbook間の移動はできないのでしょうか? また、これをvbaで対策しようとした場合にどうしたら良いのでしょうか? ネットで調べましたが判らず、ここで質問させて頂きました。 判りにくい説明で申し訳ありませんが、よろしくお願いします。
回答: 2007側でブックの作成時に 2003以前との同じシート構成にしていないのが原因ではないでしょうか 2007になって 列、行が拡張されたのでこれにより ご質問のようなエラーになるように思います 1シートの仕様が 2003以前は 65536行、256列まで 2007では xlsx(2007)形式だと 1048576行、16384列 といった具合に違っているためのように感じます 2007側で『officeボタン』>『excelのオプション』>『保存』>『ファイルの保存形式』を 『excel 97-2003 ブック(*.xls)』に変更してから マクロの移植操作をして見ましょう