- - PR -
EXCEL(VBA)のPageSetupの処理を高速化したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-26 12:16
お世話さまです。
VS.NET2003(VB.NET)でCSVファイルを書き出し、そのCSVファイルを読み込んで 帳票を作成するEXCEL(Ver.2002)のテンプレート(List.xlt)を VBのコードから起動しています。 このEXCELのコードの中で下記のようにマージンを設定しているのですが この処理に見るからに時間(5、6秒)がかかっています。 With ActiveSheet.PageSetup .LeftMargin = Application.InchesToPoints(0.78740157480315) .RightMargin = Application.InchesToPoints(0) .TopMargin = Application.InchesToPoints(0) .BottomMargin = Application.InchesToPoints(0) .HeaderMargin = Application.InchesToPoints(0) .FooterMargin = Application.InchesToPoints(0) End With 帳票の作成方法としては、罫線などを引いたテンプレート(Temp)シートのセルに データをセットし、下記のようにシートごとコピーする方法をとっています。 gBook_Name = ActiveWorkbook.Name '新規ワークブック作成 Application.SheetsInNewWorkbook = 1 Workbooks.Add 'ワークシート数を1つで新規ブックを作成 gNewBook_Name = ActiveWorkbook.Name Workbooks(gBook_Name).Activate Workbooks(gBook_Name).Sheets("Temp").Select Cells.Select Application.CutCopyMode = False Selection.Copy Workbooks(gNewBook_Name).Activate Workbooks(gNewBook_Name).Sheets("Sheet1").Select Cells.Select ActiveSheet.Paste Workbooks(gNewBook_Name).Sheets("Sheet1").Select Sheets("Sheet1").Name = "帳票のシート名" Workbooks(gNewBook_Name).Sheets("帳票のシート名").Cells(1, 1).Select このようにしてシートをコピーした後でPageSetupでマージンの調節を しているのですが、あらかじめマージンを調節したテンプレート(Temp)の書式 も"Sheet1"にコピーできればいいのですが、その実装方法が分かりません。 なんとかこのPageSetupの部分を高速化する手立てはないものでしょうか? ご教示頂けるとありがたいのですが。 以上、宜しくお願い致します。 |
|
投稿日時: 2004-11-26 18:51
こんにちは。お役に立てるか分かりませんが、
>帳票の作成方法としては、罫線などを引いたテンプレート(Temp)シートのセルに >データをセットし、下記のようにシートごとコピーする方法をとっています。 テンプレートのExcelファイルをコピーしてそのファイル(既にマージンがセットされている) にデータをセットすれば事は足りませんでしょうか? あと、今回の件とは直接関係ないかも知れませんが、こちらのVBA高速化テクニックも読んでみると面白いです。 http://www.officetanaka.net/ [ メッセージ編集済み 編集者: とっと 編集日時 2004-11-26 18:53 ] |
|
投稿日時: 2004-11-26 23:40
===>とっと様
早速のレス、ありがとうございます。 >テンプレートのExcelファイルをコピーしてそのファイル(既にマージンがセットされている) にデータをセットすれば事は足りませんでしょうか? その方法は思いもよりませんでした。 しかし、VB.NET側で既にCSVを作成しているルートは保持したいので EXCELのVBA側でなんとかしたいのです。^^; >あと、今回の件とは直接関係ないかも知れませんが、こちらのVBA高速化テクニックも読んでみると面白いです。 ご紹介ありがとうございます。 VBAは素人に毛が生えたようなレベルですので、参考にさせて頂きます。 |
|
投稿日時: 2004-11-27 00:49
確かプリンターがネットワーク越しに繋がってたらおそいんだったような気がします。
ローカルポートにつなげば、PageSetup関係早くなるのではないかと。 すみません、これじゃ回答にならないですよね。 |
|
投稿日時: 2004-11-27 08:27
おはようございます。
>このようにしてシートをコピーした後でPageSetupでマージンの調節を >しているのですが、あらかじめマージンを調節したテンプレート(Temp)の書式 >も"Sheet1"にコピーできればいいのですが、その実装方法が分かりません。 普通にExcelを操作してみると、手動でシートを『移動またはコピー』でコピーすると 当然設定したマージンもその状態でコピーされますね?手動で出来るんですから オートメーションでも出来るんじゃないでしょうか。 |
|
投稿日時: 2004-11-27 16:43
===>Lin様
レス、ありがとうございます。 >確かプリンターがネットワーク越しに繋がってたらおそいんだったような気がします。 私の実行環境もネットワークプリンタです。 だとしたら手の打ちようがなさそうですね。 |
|
投稿日時: 2004-11-27 16:49
===>とっと様
こんにちは。 度重なるレス、感謝です。 >普通にExcelを操作してみると、手動でシートを『移動またはコピー』でコピーすると 当然設定したマージンもその状態でコピーされますね? 本当ですね。 なんかこの角度で攻めればなんとかなりそうな気がしてきました。 月曜にその方法で試してみます。 ありがとうございました。 |
1