- ベストアンサー
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で対策しようとした場合にどうしたら良いのでしょうか? ネットで調べましたが判らず、ここで質問させて頂きました。 判りにくい説明で申し訳ありませんが、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
苦労されてるようですね、onlyromです。 先の質問同様、今回のも原因を見つけることは無理だと思われます。 それより2007で上手く動作させる方法を考えた方がいいような。。。 で、一案。 今回のは移動元BOOKが1シートゆえのエラーのようですから 移動元BOOKにダミーのシートをひとつ追加し2シートにして移動し、 移動後、移動元BOOKを保存しないでクローズしてやる というのはどうでしょう。。。
その他の回答 (2)
- redfox63
- ベストアンサー率71% (1325/1856)
2007側でブックの作成時に 2003以前との同じシート構成にしていないのが原因ではないでしょうか 2007になって 列、行が拡張されたのでこれにより ご質問のようなエラーになるように思います 1シートの仕様が 2003以前は 65536行、256列まで 2007では xlsx(2007)形式だと 1048576行、16384列 といった具合に違っているためのように感じます 2007側で『Officeボタン』>『Excelのオプション』>『保存』>『ファイルの保存形式』を 『Excel 97-2003 ブック(*.xls)』に変更してから マクロの移植操作をして見ましょう
補足
ご回答ありがとうございます。 1シートの仕様ですが、列行ともに問題ありません。 (空白のシートでも再現発生します) >2007側で『Officeボタン』>『Excelのオプション』>『保存』>『ファイルの保存形式』を『Excel 97-2003 ブック(*.xls)』に変更してから >マクロの移植操作をして見ましょう 試してみましたが、症状は改善できませんでした。 保存しない新規BOOKが1シートしかない場合に、そのシートを別のBOOKに移動させようとすると発生するようです。 ネットでいろいろ調べましたがお手上げ状態です。 また調べてみます。 ありがとうございました。
- rub_oil
- ベストアンサー率14% (3/21)
直接の回答ではなくて申し訳ありません。 VistaではOffice2000がサポート対象外となりました。 Vistaと同世代とかんがえられるOffice2007でも 同様の事がおきているのではないでしょうか? 2000と2007のマクロの互換性を調べるツールが あるようですので参考になりましたら。
補足
ご回答ありがとうございます。 参考URLを参考にして互換チェックしようとしたら、Excelの互換チェックするメニューが選択不可で悪戦苦闘してます。 (Office2007は旧バージョンから変わりすぎて嫌いです) 現行のVBAで作られたソフトをExcel2007で動作させないといけないのですが、代替手段があればと思い試行錯誤してます。 再現パターンがわかりました。 1.ブックAを作成してシートを1つにして保存する。 2.ブックAから新規作成で新規ブックを作成する(新規ブックは保存しない) 3.新規ブックのシートを1つにする(Sheet2,Sheet3を削除) 4.新規ブックのSheet1を選択して右クリックニューで「移動またはコピー」でSheet1をブックAに移動 5.移動に失敗する(異常ダイアログが表示される) VBAからでも、これと同じ手順で移動してます。 これが解決できればVBAで移動できない件も解決できそうです。
お礼
悪戦苦闘しましたが、結局下記の方法で逃げました。 1.作業用ブックをExcel8形式で変換保存 2.作業用ブックを閉じる 3.作業用ブックを開く 4.作業用ブックのシートを目的ブックに移動 かなり強引な方法ですが、結果が同じならと苦肉の策です。 それにしても、Excel2007は旧Excelと互換性低くてExcel2000で作成されたシステムを動作させるのにかなり苦労しました。
補足
onlyromさん、ご回答ありがとうございます。 神が降臨してくれた気分です。 確かにonlyromさんの案でいけそうな感じがします。 現在、別件の緊急業務を行ってますので、それが終わりましたら試してみようと思います。 どうもありがとうございました。 結果はまたご報告します。