-PR-
解決済み

Excel2007でBOOK間のシート移動をVBAで行うとエラーになる

  • すぐに回答を!
  • 質問No.4401109
  • 閲覧数11625
  • ありがとう数3
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 50% (4/8)

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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.3
レベル12

ベストアンサー率 59% (228/384)

苦労されてるようですね、onlyromです。

先の質問同様、今回のも原因を見つけることは無理だと思われます。
それより2007で上手く動作させる方法を考えた方がいいような。。。

で、一案。

今回のは移動元BOOKが1シートゆえのエラーのようですから
移動元BOOKにダミーのシートをひとつ追加し2シートにして移動し、
移動後、移動元BOOKを保存しないでクローズしてやる
というのはどうでしょう。。。
 
 
補足コメント
yosshi777

お礼率 50% (4/8)

onlyromさん、ご回答ありがとうございます。
神が降臨してくれた気分です。

確かにonlyromさんの案でいけそうな感じがします。
現在、別件の緊急業務を行ってますので、それが終わりましたら試してみようと思います。

どうもありがとうございました。
結果はまたご報告します。
投稿日時 - 2008-10-15 18:17:29
お礼コメント
yosshi777

お礼率 50% (4/8)

悪戦苦闘しましたが、結局下記の方法で逃げました。

1.作業用ブックをExcel8形式で変換保存
2.作業用ブックを閉じる
3.作業用ブックを開く
4.作業用ブックのシートを目的ブックに移動

かなり強引な方法ですが、結果が同じならと苦肉の策です。
それにしても、Excel2007は旧Excelと互換性低くてExcel2000で作成されたシステムを動作させるのにかなり苦労しました。
投稿日時 - 2008-11-07 18:01:15

その他の回答 (全2件)

  • 回答No.1
レベル7

ベストアンサー率 14% (3/21)

直接の回答ではなくて申し訳ありません。
VistaではOffice2000がサポート対象外となりました。
Vistaと同世代とかんがえられるOffice2007でも
同様の事がおきているのではないでしょうか?
2000と2007のマクロの互換性を調べるツールが
あるようですので参考になりましたら。
補足コメント
yosshi777

お礼率 50% (4/8)

ご回答ありがとうございます。
参考URLを参考にして互換チェックしようとしたら、Excelの互換チェックするメニューが選択不可で悪戦苦闘してます。
(Office2007は旧バージョンから変わりすぎて嫌いです)

現行のVBAで作られたソフトをExcel2007で動作させないといけないのですが、代替手段があればと思い試行錯誤してます。

再現パターンがわかりました。

1.ブックAを作成してシートを1つにして保存する。
2.ブックAから新規作成で新規ブックを作成する(新規ブックは保存しない)
3.新規ブックのシートを1つにする(Sheet2,Sheet3を削除)
4.新規ブックのSheet1を選択して右クリックニューで「移動またはコピー」でSheet1をブックAに移動
5.移動に失敗する(異常ダイアログが表示される)

VBAからでも、これと同じ手順で移動してます。
これが解決できればVBAで移動できない件も解決できそうです。
投稿日時 - 2008-10-14 17:25:55


  • 回答No.2
レベル14

ベストアンサー率 71% (1325/1856)

2007側でブックの作成時に 2003以前との同じシート構成にしていないのが原因ではないでしょうか

2007になって 列、行が拡張されたのでこれにより ご質問のようなエラーになるように思います

1シートの仕様が
2003以前は 65536行、256列まで
2007では xlsx(2007)形式だと 1048576行、16384列
といった具合に違っているためのように感じます

2007側で『Officeボタン』>『Excelのオプション』>『保存』>『ファイルの保存形式』を
『Excel 97-2003 ブック(*.xls)』に変更してから
マクロの移植操作をして見ましょう
補足コメント
yosshi777

お礼率 50% (4/8)

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

1シートの仕様ですが、列行ともに問題ありません。
(空白のシートでも再現発生します)

>2007側で『Officeボタン』>『Excelのオプション』>『保存』>『ファイルの保存形式』を『Excel 97-2003 ブック(*.xls)』に変更してから
>マクロの移植操作をして見ましょう
試してみましたが、症状は改善できませんでした。
保存しない新規BOOKが1シートしかない場合に、そのシートを別のBOOKに移動させようとすると発生するようです。

ネットでいろいろ調べましたがお手上げ状態です。
また調べてみます。
ありがとうございました。
投稿日時 - 2008-10-14 19:05:16
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


抽選で合計100名様にプレゼント!

ピックアップ

ページ先頭へ