作業グループマクロについて動作検証のお願い | |
---|---|
[195476] 作業グループマクロについて動作検証のお願い- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ kazuo -(2022/12/30(16:35)) □U R L/ 以下のコードでの作業グループマクロの動作報告をお願いします。(Adobe Acrobat ReaderなどのPDFビューアーが必要です) 目的:ただの好奇心です。 VBAではActiveSheetは1つのシートだけに対応します。 そのため作業グループでのマクロは、対応しないものがあると認識しておりました。 以前、ページセットアップで作業グループ記録マクロを提示してしまったこともありますが、 ttps://www.239-programing.com/cgi-bin/excelvba_bbs.cgi?id=509 でページセットアップが作業グループ一括で出来ないことを確認しております。 ttps://www.239-programing.com/cgi-bin/excelvba_bbs.cgi?id=536 にて、ActiveSheet.ExportAsFixedFormat xlTypePDFが複数シート出力することも承知しておりますが、 質問者への回答として私は、ExportAsFixedFormat メソッドはWorkbookオブジェクトでの使用をお勧めしました。 ttps://www.excel.studio-kazu.jp/kw/20221214182933.html にて皆さん、作業グループのマクロを推奨しているので、良いのだろうかな?と思ってしまいました。 環境はexcel2016で、バージョン 2003 (ビルド 12624.20382) と2020年から変えていませんが、 今回実験してみると手作業と同じ動作が実施出来てしまいました。 オブジェクトブラウザやヘルプ(マイクロソフトドキュメント)にも、 Worksheetオブジェクトにはありますが、Worksheetsオブジェクトには, ExportAsFixedFormat メソッドやPageSetup プロパティやRange プロパティはありません。 質問: excel2010などでも作業グループマクロは手作業と同じ動作をしますか?(以下は私の環境での結果) Excel2010 Excel2013 Excel2019 ファイル名 1ページ目のrightヘッダー 1ページ目のA1セル値 2ページ目のrightヘッダー 2ページ目のA1セル値 1st.pdf 1st test 1st test 2nd.pdf 2nd test 2nd test 以上よろしくお願いいたします。 Sub Macro1() Dim s As String Dim i As Long s = "1st 2nd" For i = 0 To 1 初期化 s ' 作業グループでのマクロの記録を修正 Worksheets(Split(s)).Select Worksheets(Split(s)(i)).Activate Range("A1").Select ActiveCell.FormulaR1C1 = "test" Application.PrintCommunication = False With ActiveSheet.PageSetup .CenterHeader = "test" 'RightHeaderはActiveSheetに替わるのか End With Application.PrintCommunication = True Worksheets(Split(s)).Select Worksheets(Split(s)(i)).Activate ActiveSheet.ExportAsFixedFormat xlTypePDF, CurDir & "\" & Split(s)(i) & ".pdf", OpenAfterPublish:=True Next MsgBox CurDir & " にpdfを保存しました" & vbCrLf & "お手数ですが記録の上削除下さい" End Sub Private Sub 初期化(ss As String) Dim s, i Application.PrintCommunication = False For Each s In Split(ss) If Not Application.Evaluate("isref(" & s & "!a1)") Then If i Mod 2 = 0 Then Worksheets.Add.Name = s Else Worksheets.Add(, Worksheets(Worksheets.Count)).Name = s End If End If With Worksheets(s) .Range("a1").Value = "" .Range("a2").Value = s .PageSetup.CenterHeader = "" .PageSetup.RightHeader = s .PageSetup.PaperSize = xlPaperA5 End With i = i + 1 Next Application.PrintCommunication = True End Sub |
[195477] Re[1]: 作業グループマクロについて動作検証のお願い- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/12/31(19:50)) □U R L/ ちょっと、よく分かりません。 >ttps://www.excel.studio-kazu.jp/kw/20221214182933.html >にて皆さん、作業グループのマクロを推奨しているので、 具体的にどの辺りですか? >良いのだろうかな?と思ってしまいました。 「それは良くない、何故なら○○だから」と言う部分を明確に書いていただけませんか? >Worksheetオブジェクトにはありますが、Worksheetsオブジェクトには, >ExportAsFixedFormat メソッドやPageSetup プロパティやRange プロパティはありません。 今回どこにそんなメソッドを使っているコードがあるんでしょうか? 私には該当する箇所が見つけられなかったのですが・・ >質問: excel2010などでも作業グループマクロは手作業と同じ動作をしますか?(以下は私の環境での結果) 何をあぶり出したいのかよく分からないですし、 ご提示のコードがその検証にマッチしているのかも確信が持てません。 (ループ処理で何かをミスっているような雰囲気がします。私の思い違いなら済みません) 「何をあぶり出したいのか」をご説明いただけませんか? 必要なら、こちらでも独自にコードを書いてテストしてみたいと思いますが |
[195478] Re[2]: 作業グループマクロについて動作検証のお願い- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2023/01/01(21:04)) □U R L/ 半平太さんコメントありがとうございます。 >具体的にどの辺りですか? >シートをグループ化してPDFエクスポートすると、複数シートが1つのPDFになるんだよ >(しっとるけ) 2022/12/16(金) 09:03:24 >Worksheets(PDFs(Key).Items).Select >ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:="D:\" & Key & ".pdf" >(´・ω・`) 2022/12/14(水) 20:40:14 >Worksheets(ary).Select >ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, _ >(γ) 2022/12/20(火) 11:36:37 >「それは良くない、何故なら○○だから」と言う部分を明確に書いていただけませんか? >>作業グループのマクロを推奨している と書いております。 良いサイトは見つけられませんが、 >ttps://www.239-programing.com/cgi-bin/excelvba_bbs.cgi?id=509 ttps://www.moug.net/tech/exvba/0040059.html で1シートずつ設定しましょうとされております。 しかし、殆どのバージョンで動作するのならそれは全く問題ないと思いますし、何故かページセットアップが出来てしまったので、 動作報告をお願いしております。 >今回どこにそんなメソッドを使っているコードがあるんでしょうか? 確かにありません。ですが、「>VBAではActiveSheetは1つのシートだけ」なのに対象が結果的に複数シートだということです。 納得は頂けないでしょうが、提示のコードでの結果報告を頂けますようお願いいたします。 |
[195479] Re[3]: 作業グループマクロについて動作検証のお願い- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/01/02(15:47)) □U R L/ >具体的にどの辺りですか? 了解しました。 以下のコードとSheet3シートを追加してテストを実施しました。 > ActiveSheet.ExportAsFixedFormat xlTypePDF, CurDir & "\" & Split(s)(i) & ".pdf", OpenAfterPublish:=True Call 個別チェック(s) ’←★この一文を挿入 > Next > MsgBox CurDir & " にpdfを保存しました" & vbCrLf & "お手数ですが記録の上削除下さい" Sub 個別チェック(s As String) ’★結果をSheet3に打ち出す Dim WsResult As Worksheet Dim ws As Worksheet Dim rwToRite As Long Set WsResult = Sheets("Sheet3") For Each ws In Sheets(Split(s)) rwToRite = WsResult.Cells(500, "A").End(xlUp).Offset(1).Row With Sheets("Sheet3") .Cells(rwToRite, "A") = ws.Name .Cells(rwToRite, "B") = ws.Range("A1") .Cells(rwToRite, "C") = ws.PageSetup.CenterHeader .Cells(rwToRite, "D") = ws.PageSetup.RightHeader .Cells(rwToRite, "E") = Time .Cells(rwToRite, "F") = Application.Version End With Next End Sub <Sheet3 結果取りまとめ図> 行 __A__ __B__ ___C___ __D__ _____E_____ _____F_____ __G__ 1 File A1 Center right 時刻 バージョン (XL) 2 1st test test 1st 3:27:32 PM 9 2000 ←※古すぎて対応コマンドがないものは 3 2nd test 2nd 3:27:32 PM 9 2000 ↓ コメントアウトして実施。 4 1st test 1st 3:27:33 PM 9 2000 Application.PrintCommunication 5 2nd test test 2nd 3:27:33 PM 9 2000 ActiveSheet.ExportAsFixedFormat 6 1st test test 1st 3:29:59 PM 14 2010 7 2nd test test 1st 3:29:59 PM 14 2010 8 1st test test 2nd 3:30:00 PM 14 2010 9 2nd test test 2nd 3:30:00 PM 14 2010 10 1st test test 1st 3:30:48 PM 16 365 11 2nd test test 1st 3:30:48 PM 16 365 12 1st test test 2nd 3:30:49 PM 16 365 13 2nd test test 2nd 3:30:49 PM 16 365 <追記>2010と364については、出来上がったPDFと上表を照合して、合致を確認しております。 |
[195480] Re[4]: 作業グループマクロについて動作検証のお願い- ■記事引用/メール受信=OFF■ □投稿者/ kazuo -(2023/01/02(22:03)) □U R L/ 半平太さんありがとうございました。 ActiveCellは以前から作業シートマクロが有効だったのですね。 もしかしたら、 Worksheets(ary).Select ActiveSheet.ExportAsFixedFormat xlTypePDF を実行すると、作業シートマクロが有効になってしまうスイッチが入ってしまうのかも知れません。 と思ったら、Macro1実行後 Worksheets(s).PageSetup.CenterHeader = "" などのマクロではヘッダーが設定できないことが判明しました。 もうちょっといじってみますが、今のところ、使わない方が良いかもです。 Sub Macro2() Const s = "1st 2nd" Worksheets("Sheet3").Activate 初期化 s 'CenterHeaderが消えていない Call 個別チェック(s) Worksheets(Split(s)).Select ' ActiveSheet.Range("A1").Value = "test" 'これでは作業シートにならない Range("A1").Select ActiveCell.Value = "test" Call 個別チェック(s) Worksheets("Sheet3").Activate End Sub この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
[195481] Re[5]: 作業グループマクロについて動作検証のお願い- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2023/01/03(16:49)) □U R L/ > Worksheets(ary).Select > ActiveSheet.ExportAsFixedFormat xlTypePDF > を実行すると、作業シートマクロが有効になってしまうスイッチが入ってしまうのかも知れません。 ActiveSheet.ExportAsFixedFormatは無害だと思います。 これが曲者じゃないですか。 ↓ Application.PrintCommunication 色々実験をしてみると、正常に稼働させるには こんな順序にすべし、と言う結論になりました。(余計なことをやると不測の事態に陥ります) ↓ (1)作業グループを作成する (2)Application.PrintCommunicationをFalseに設定する(古い設定履歴をクリアする) (3)ActiveSheet.PageSetup を実行する (4)Application.PrintCommunicationをTrueに設定する(いまやった設定だけ、明示的に実現させる) ※上記(3)で、例えば CenterHeaderだけと言った部分的統一設定は出来ず、 ActiveSheetに設定されているその他の設定値を含めて全て上書きされる。 |
[195482] Re[6]: 作業グループマクロについて動作検証のお願い- ■ / 記事引用/メール受信=OFF■ □投稿者/ kazuo -(2023/01/04(10:15)) □U R L/ >これが曲者じゃないですか。 >Application.PrintCommunication たしかにヘッダーは、初期化(ss As String)にて外してみても個別設定できましたし、 Macro1()では、外すと単独シートのみとなりました。 しかし、 ttps://www.239-programing.com/cgi-bin/excelvba_bbs.cgi?id=509 にて、投稿者 : tokumei 投稿日時 : 2022/01/19(Wed) 13:06:53 で投稿したときは、作業グループマクロでは複数シートにはヘッダーを一括設定できなかったのですが、 今は、新規Bookでも複数シートに設定できます。 副反応が怖かったですが、命が惜しいのでコロナのワクチン注射は全て受けましたが、 作業グループマクロの副反応は何があるのか無いのか良く解らないので、私としては使わない・薦めないこととします。 この記事にはVBAのコードが含まれています。 緑の太文字→注釈 茶色の太文字→条件分岐 赤の太文字→ループ 青の太文字→その他 |
このトピックに書きこむ |
---|