こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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)

どうぞよろしくお願いいたします(_ _)

投稿日時 - 2009-06-24 10:33:15

QNo.5070312

すぐに回答ほしいです

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

Excelは2003→2007で使用できる行列のサイズが増えました。

マクロで、CSVファイルを開いたExcelは2007です。
でも、Move先であるThisWorkBookは2003のファイルだからサイズが合わないよ……と、言う事だと思います。

次のことを試して見てください。
マクロが入ったブックをExcel2007形式(.xlsm)で保存して実行。
これでThisWorkBookもExcel2007のブックなのでサイズが合わないと言うことは無くなると思われます。

投稿日時 - 2009-06-24 11:27:40

お礼

回答どうもありがとうございます。
.xlsmで保存したらできました!

こんなに早く解決できるとは思ってもいませんでした(感涙)
本当にありがとうございました(_ _)

投稿日時 - 2009-06-24 15:59:03

ANo.2

このQ&Aは役に立ちましたか?

4人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

No.2です。
念のために補足ですが、サイズが増えた「行列」とは、シートの行と列の事です。
Excel2003
・最大行数:65536行
・最大列数:256列

Excel2007
・最大行数:1048576行
・最大列数:16384列

投稿日時 - 2009-06-24 11:34:07

お礼

なるほど~、そんな違いがあるのですね。
勉強不足でお恥ずかしい限りです。

補足説明どうもありがとうございました(^^)

投稿日時 - 2009-06-24 16:01:38

ANo.1

Activesheetsが使えないと思うのでWorksheetsでやってみてください。

Worksheets.Move After:=Workbooks(ThisWorkbook.Name).Sheets(1)

投稿日時 - 2009-06-24 11:26:38

お礼

御助言どうもありがとうございます。
やってみましたが、やはり同じエラーがでてしまいました。。。

投稿日時 - 2009-06-24 15:57:00

あなたにオススメの質問