Road to DBD

Road to DBD

PR

×

カレンダー

バックナンバー

2026.05
2026.04
2026.03
2026.02
2026.01

キーワードサーチ

▼キーワード検索

プロフィール

ジャムシード

ジャムシード

コメント新着

mayggW@ продвижение раскрутка сайта договор Заказать seo поисковую оптимизацию сайт…
通りすがりプログラマー@ Re:複数テーブルによるUPDATE(02/11) 随分前の記事にコメント失礼します。 rown…
ワンコ0995 @ Re:包含データベース(06/02) ((データベース)データベース,)デー…
しぐしぐ@ Re:TOP 100 PERCENT(05/08) お世話になっております。 最近、旧システ…
ハニー@ Re:INSTEAD OFトリガの限界(07/16) 1SQLでやらずに変数に入れればいいじゃん
2009.05.09
XML
カテゴリ: その他
Excel2007について。。

Excelへのレポート等の出力でテンプレートを新しいブックにコピーする方法を使ったりすることがある。
で、Excelのテンプレートをxlsxで作成し、新しいブックを作成してコピーするマクロを書く。

Sub Test()
 Dim xlApp As Object
 Dim xlBook As Object
 Dim xlTemp As Object

 Set xlApp = CreateObject("Excel.Application")
 Set xlBook = xlApp.Workbooks.Add


 xlTemp.Worksheets("Template").Copy xlBook.Worksheets(1)
 xlTemp.Close False
 xlApp.Visible = True

 Set xlTemp = Nothing
 Set xlBook = Nothing
 Set xlApp = Nothing
End Sub

上記の処理はExcel2007で実行してもエラーになることがある。
「実行時エラー '1004':

 移動先またはコピー先のブックの行列数が元のブックの行列数よりも少ないため、シートを移動先またはコピー先のブックに挿入できません。データを別のブックに移動またはコピーするには、データを選択して、[コピー]コマンドと[貼り付け]コマンドを使用して移動先またはコピー先のブックのシートの挿入してください」

これはExcelのオプションでデフォルトの保存形式を「Excel2000-2003(xls)」に変更していると発生する。


Excel2007は世の中的にはまだそれほど多く使われていないため、安易に保存した形式がxlsxになっていると、外に送ったときに「開けない」と言われてしまう可能性が高いから、予防的にデフォルトの保存形式を変更しているのだから、これはダメだとは言えない。

では、保存形式に関わらず、新規ブックを互換モードで開くためにはどうするか。
いろいろ試行錯誤した結果としては、空のbook.xlsxというExcelファイルを作成しておき、以下のようにする

Set xlBook = xlApp.Workbooks.Add("C:\Temp\Book.xlsx")

これで新規ブックはBookという名前(重複していればBook1~)で2007モードで作成され、コピーは失敗しなくなる。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2009.05.09 16:59:51
コメントを書く
[その他] カテゴリの最新記事


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: