• ベストアンサー
  • すぐに回答を!

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
  • 閲覧数12697
  • ありがとう数3

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

  • ベストアンサー
  • 回答No.3
  • onlyrom
  • ベストアンサー率59% (228/384)

苦労されてるようですね、onlyromです。 先の質問同様、今回のも原因を見つけることは無理だと思われます。 それより2007で上手く動作させる方法を考えた方がいいような。。。 で、一案。 今回のは移動元BOOKが1シートゆえのエラーのようですから 移動元BOOKにダミーのシートをひとつ追加し2シートにして移動し、 移動後、移動元BOOKを保存しないでクローズしてやる というのはどうでしょう。。。    

共感・感謝の気持ちを伝えよう!

質問者からのお礼

悪戦苦闘しましたが、結局下記の方法で逃げました。 1.作業用ブックをExcel8形式で変換保存 2.作業用ブックを閉じる 3.作業用ブックを開く 4.作業用ブックのシートを目的ブックに移動 かなり強引な方法ですが、結果が同じならと苦肉の策です。 それにしても、Excel2007は旧Excelと互換性低くてExcel2000で作成されたシステムを動作させるのにかなり苦労しました。

質問者からの補足

onlyromさん、ご回答ありがとうございます。 神が降臨してくれた気分です。 確かにonlyromさんの案でいけそうな感じがします。 現在、別件の緊急業務を行ってますので、それが終わりましたら試してみようと思います。 どうもありがとうございました。 結果はまたご報告します。

関連するQ&A

  • シートの移動が出来ません。

    エクセルのシートを別のブックに移動が出来ません。「コピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入出来ません。データを別のブックに移動またはコピーするにはデータを選択してコピーコマンドと張り付けコマンドを使用して移動先またはコピー先のブックシートに挿入して下さい。」と表示されます。この意味がいまいちわかりません。移動元が2つのシートにわけられ、ひとつのシートにサムイフ関数が入っています。なぜ行列数が違ってしまうのでしょうか?

  • Excel2007で2003のVBAが実行時エラー1004

    普段は事務員の非プログラマーです。 Excel2000,2003で動いていたマクロを2007でも動くようにしてほしいと言われて頑張っているのですが、どうすればいいのか見当がつきません(*_*) どうぞ知識者の皆様のお知恵をお貸しください。 Excel2003で読み取りのみのVBAのファイルで、ボタンを押すとマクロが実行され、別CSVファイルを指定しVBAのファイルの別シートとして読み込みます。次に別txtファイルを指定してVBAのファイルの別シートに読み込みます。最後にその2つのシートの必要な個所のみ結合して、新しいcsvファイルとして保存する処理をしています。 Excel2007でこれを実行すると、csvファイルを読み込むときに次のようなエラーがでます。 「実行時エラー'1004':移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー]コマンドと[貼り付け]コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 マクロの中身はこのような感じです。 エラーは最終行の「ActiveSheet~」ででています。 Sub openExcel() 'Step1 open excel Dim ExcelFileOpen As String ExcelFileOpen = Application.GetOpenFilename(FileFilter:="Excel Files,*.csv") If ExcelFileOpen <> "False" Then Workbooks.OpenText Filename:=ExcelFileOpen ActiveSheet.Move After:=Workbooks(ThisWorkbook.Name).Sheets(1) どうぞよろしくお願いいたします(_ _)

  • エクセルのシートコピーのエラー

    Windows7 エクセル2007です。 ブック間のシートコピーでエラー発生し挿入できません。原因と挿入方法お願いします。 エラーメッセージ; ------------------------------- 移動先またはコピー先のブックの行列数が元のブックの行数列よりも少ないため、シートを移動先またはコピー先のブックに挿入されません。 データを別のブックに移動またはコピーするにはデータを選択して、「コピー」コマンドと「貼りつけ」コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 ----------------------------------- やりたいこと; ファイル名AAAの一つのシートをファイル名BBBのシート末尾にコピーしたい。

その他の回答 (2)

  • 回答No.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に移動させようとすると発生するようです。 ネットでいろいろ調べましたがお手上げ状態です。 また調べてみます。 ありがとうございました。

  • 回答No.1

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

参考URL:
http://office.microsoft.com/ja-jp/excel/HA100775041041.aspx?pid=CH100648071041

共感・感謝の気持ちを伝えよう!

質問者からの補足

ご回答ありがとうございます。 参考URLを参考にして互換チェックしようとしたら、Excelの互換チェックするメニューが選択不可で悪戦苦闘してます。 (Office2007は旧バージョンから変わりすぎて嫌いです) 現行のVBAで作られたソフトをExcel2007で動作させないといけないのですが、代替手段があればと思い試行錯誤してます。 再現パターンがわかりました。 1.ブックAを作成してシートを1つにして保存する。 2.ブックAから新規作成で新規ブックを作成する(新規ブックは保存しない) 3.新規ブックのシートを1つにする(Sheet2,Sheet3を削除) 4.新規ブックのSheet1を選択して右クリックニューで「移動またはコピー」でSheet1をブックAに移動 5.移動に失敗する(異常ダイアログが表示される) VBAからでも、これと同じ手順で移動してます。 これが解決できればVBAで移動できない件も解決できそうです。

関連するQ&A

  • excel2007 新規ブック作成時のvba処理

    excel2007にてVBA処理を行っています。 vbaにて 新規ワークブックを作成 最初に開いているワークブックのシートを、新規ワークブックへコピー この作業を行っているのですが、実行時に --- 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー] コマンドと [貼り付け] コマンドを使用して移動先またはコピー先のブックのシートに挿入してください。 --- このエラーが表示されます。 保存拡張子も「.xls」から「.xlsx」へ変更するも、互換モードの表示が外れません。 さらに原因を探ると、現在使っているPCのエクセルにて エクセルオプション→保存→ファイルの保存形式 この設定が「excel ブック」ではなく、「excel 97-2003ブック」のため、 新規ワークブック作成時に互換モードでファイルが作成されてしまうことで、2003と2007の行列数の違いからエラーになるようです。 確認のため、ファイル保存形式を2007仕様にすると、問題なく実行されました。 新旧のPCが混在するため、できたらファイル保存形式を97-2003モードで保持したまま、vbaでの新規ワークブックの作成は互換モードを外した状態で行いたいのですが、背景の色など、2007での特色があるため、2003形式には戻したくないのが心情です。 解決する方法はありますでしょうか?よろしくお願いします。

  • VBAによるブック間のシートの移動またはコピペ

    検索で探すもピッタリ来るものが探せなかったものですみません。 Aブックにシート1とシート2があります。 bブックにシート3があります。 シート2とシート3の名前は同じ"abc"とします。 Aブックのシート1にコマンドボタンを設置し、このボタンをクリックするとシート3をシート2に移動またはコピー&ペーストするようにVBAで実現できますでしょうか? よろしくご教授ください。

  • エクセルのマクロが7回目でエラーになる。シートコピーでエラー発生。

    エクセルマクロで【ファイルA】に【マクロ表示】を作成。 内容:【ファイルA】は4シート(シート名:【チャート】【ひな型】【データ】【メニュー】)。 (1)【メニュー】にあるリストから「地域A」を選択 (2)他のブックを開き「地域A」のデータをコピー、【データ】に貼り付け。20のブックからデータを貼り付ける。 (3)【チャート】【ひな型】には、グラフがある。 元のデータは【データ】にあるので、「地域A」のデータがコピーされた時点でグラフは出来る。 (4)【チャート】、【ひな型】をコピーする。 (5)【データ】で作表し、【ひな型(2)】【チャート(2)】に貼り付ける。 (6)【チャート(2)】、【ひな型(2)】を新しいブックに移動。 新しい名前【Book1】で保存。リンクを切り上書きする。 (7)【マクロ表示】は終了し、【メニュー】に戻る。 画面は【Book1】【ひな型(2)】で終わる。 (8)【Book1】を閉じる。 【ファイルA】【メニュー】から「地域B」を選択。【マクロ表示】を実行。 以上の手順で、【ファイルA】を閉じることなく、「地域A」「地域B」・・と選択して、【マクロ表示】を実行していくと、 7回目で(4)でエラーになってしまう。 Worksheets("ひな型").copy before:=worksheets(1)の行で。 エラーメッセージは「実行時エラー1004 WorksheetクラスのCopyメソッドが失敗」。 【ファイルA】のシートを右クリックでを見てみると、 「シートの移動またはコピー」の「移動先ブック名」が(新しいブック)、挿入先が空になっています。 通常、「移動先ブック名」は現在のブック名【ファイルA】、 挿入先【メニュー】【データ】【ひな型】【チャート】であると思うのですが。 シートのコピー回数に制限でもあるのでしょうか? マクロで回避が出来る方法があればお教え下さい。 次のリストを選択前に毎回【ファイルA】を閉じる以外無いのでしょうか? よろしく御指導下さい。

  • EXCEL VBA シートの名前を指定してコピー

    EXCEL VBA 初心者です。 とても困っています。 助けてください。 excel2010を使っています。 今,「原本」というシートがあり,それをマクロを使って同じブック内にコピーしたいと思っています。 コピーして新しく作られたシートの名前は「A1」のセルに入力されている値にしたいです。 コピーされた後のシートにはマクロボタンは削除したいと考えています。 また,コピーした後のアクティブシートは「原本」のシートにしたいのですが これを全部いれたコマンドはどのようになるのでしょうか。 似たような質問だったり,回答があるのですが, どのように組み合わせたらいいのかよく分かりません。 どなたかお助けいただけないでしょうか。 よろしくお願いします。

  • エクセル2007 マクロ シート 移動

    マクロ学習中のものです。 エクセル2007 マクロの複数のブックのシートをひとつのブックにまとめたいです。 ふつうにコピペすると、コピー先ではマクロが走りません、 どのようにすればよいか、アドバイスください!! よろしくおねがいします。

  • Excelのシート移動

    初めまして。エクセル超初心者です。  早速ですが、ここにBook1とBook2の二つのブックがあるとします。Book1で現在参照しているSheetをBook2の例えばSheet2の前に移動、というマクロ(VBA?)を作成し、ボタン一つで移動するようにしたいのですが、どの様にすればよいのでしょうか。お教えください。

  • EXCELシートのコピー移動について

    (1)EXCELシートのコピー移動について AとういうBOOKの中のシート1をBというBOOKへシートのコピー移動はできるのですが例えばBOOKA,B,C,D,EとBOOKを5つひらいておいてAとういうBOOKの中のシート1をBのBOOKへコピーしたりC,D,Eへもコピーすることは可能でしょうか?勝手な考えですがコピー先を選択する参照ボタンなどがあるとわかりやすいと思ったのですが・・・誰か複数のBOOKにシートのコピーができる方法を教えてください。 (2)作成したデータとグラフを移動する方法について データのコピー移動は問題なくできるのですがグラフが移動されなくて困っています。 よろしくお願いいたします。

  • ExcelVBA2010 マクロが動作しない

    Excel2010のVBAについて質問します。 ブックAとブックBがあり、ブックAにはVBAのモジュールの記述がります。 そのブックAの中にあるシート1にコマンドボタンを作成し、このボタンにモジュールが登録されています。 ブックAを起動すると、ブックAの中にあるシート1をブックBにコピーします。 ブックBにコピーされたシート1のコマンドボタンに登録されているボタンをクリックすると、ブックAのVBAのモジュールが起動され動作されるはずですが、なぜかブックB内のシート1のコマンドボタンのモジュール先がブックAでは無くブックB内のリンク先に変更されてしまい、VBAが動作しません。 パソコンAでは動作し、パソコンBでは上記のエラーになってしまいます。 Excel本体の設定等を見比べましたが、一向にわかりません。 どうかご教授をお願いいたします。

  • EXCEL VBA ワークシート貼り付け

    EXCEL2000のVBAを使用して 元データーの左から5番目のワークシートをコピーして 同じフォルダー内にあるエクセルデーター(10個)の 一番左に貼り付けたいのですがVBAの処理で出来ますでしょうか? 実施する処理は元データーの左から5番目のワークシートを コピーして貼り付けたいデーターを開いて 開いたデーターを移動先ブック名に指定して一番左に元データーの 左から5番目のデーターを貼り付けて 処理が終了したら移動先ブックを閉じて次のデーターも 同じことを行いフォルダー内のデーター全てに同じ処理を 行ったら終了する? 文面だけの説明で大変申し訳ないのですがご教授していただけないでしょうか?

  • EXCEL「シートの移動またはコピー」について

    EXCEL2003で下記の現象が発生し、理由が分からずにおります。 Book1とBook2が存在し、"その両方を開いた状態"でBook1のSheet1をBook2にコピーしようとします。 その時、通常であれば「シートの移動またはコピー」ダイアログの"移動先ブック名"に、現在開かれているEXCELファイルが全て表示されますが(今回の例であれば「Book1」「Book2」「新しいブック」)、ごくたまに「Book1(コピー元)」と「新しいブック」以外が表示されないことがあります。 Book2にコピーしたいので、Book1・Book2両方を数回開き直したりするのですが、どうやっても"移動先ブック名"にBook2が表示されず、PCの再起動後に正常に表示されたりします。 これは、メモリや内容のデータ量が関係するのでしょうか。

専門家に質問してみよう