戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
作業グループマクロについて動作検証のお願い

    [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
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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などでも作業グループマクロは手作業と同じ動作をしますか?(以下は私の環境での結果)
      何をあぶり出したいのかよく分からないですし、
      ご提示のコードがその検証にマッチしているのかも確信が持てません。
      (ループ処理で何かをミスっているような雰囲気がします。私の思い違いなら済みません)
      
      「何をあぶり出したいのか」をご説明いただけませんか?
      必要なら、こちらでも独自にコードを書いてテストしてみたいと思いますが


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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つのシートだけ」なのに対象が結果的に複数シートだということです。
      
      納得は頂けないでしょうが、提示のコードでの結果報告を頂けますようお願いいたします。
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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と上表を照合して、合致を確認しております。
      
      


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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に設定されているその他の設定値を含めて全て上書きされる。


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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のコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他



このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G