次の方法で共有

マクロを記録したものを実行しても、同じ操作が再現されない

Anonymous
2015-03-02T16:44:22+00:00

マクロを使用して、以下の操作を自動化しようと考えています。

  1. [ファイル]->[名前を付けて保存]->[デスクトップを選択]
  2. 名前を付けて保存のダイアログで、以下を設定
    1. ファイルの種類を PDF に設定
    2. [オプション]をクリックして「ブック全体」をチェックし、「ドキュメントのプロパティ(R)」および「アクセシビリティ用のドキュメント構造タグ(M)」のチェックを外してOKをクリック
  3. [保存]をクリックしてPDF出力

この操作をマクロの記録を利用して保存して使用しています。

動作確認のため、手動で操作してPDFを作成した場合と、保存したマクロを利用してPDFドキュメントを作成した場合に出来上がったファイルを比較したところ、見た目には変わりませんが、マクロを使用して出来たファイルの方が、数十KB程度大きくなっていました。

手動で作成したファイル自身も数十KBしかなく、容量だけで見ると1.5倍近くになっています。

今後このマクロを拡張して数百のファイルを一括でPDFにする方法を検討したいと考えており、この容量の差は看過出来ないと思い、原因を調査しています。

なお、記録されたマクロの中身は以下のようになっています。

Sub Macro1()

'

' Macro1 Macro

'

'

    ChDir "C:\Users\XXXX\Desktop"

    ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _

        "C:\Users\XXXX\Desktop\result.pdf", Quality:=xlQualityStandard, _

        IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _

        False

End Sub

ExportAsFixedFormat を調べてみたところ、以下のドキュメントが該当したものの、「アクセシビリティ用のドキュメント構造タグ(M)」に該当するようなパラメータが無く、記録した操作が再現できない原因になっているのではと想定しています。

https://msdn.microsoft.com/ja-jp/library/microsoft.office.tools.excel.worksheet.exportasfixedformat.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

マクロの記録で保存できていない操作を追加出来ないかご存知の方いらっしゃいましたらご教授いただけますでしょうか。

開発者テクノロジ | Visual Basic for Applications

ロックされた質問。 この質問は、Microsoft サポート コミュニティから移行されました。 役に立つかどうかに投票することはできますが、コメントの追加、質問への返信やフォローはできません。

0 件のコメント コメントはありません

4 件の回答

並べ替え方法: 最も役に立つ
  1. Anonymous
    2015-03-03T00:52:13+00:00

    ActiveWorkbook.ExportAsFixedFormat

      問題がなければ

    Bookでなく当該sheetを使ってみてください。

    ActiveSheet.ExportAsFixedFormat

    この回答は役に立ちましたか?

    1 人がこの回答が役に立ったと思いました。
    0 件のコメント コメントはありません
  2. Anonymous
    2015-03-04T00:33:09+00:00

    ご回答ありがとうございます。

    提示頂いた内容試してみましたが、PDFで保存するダイアログボックスで選択できる最適化の項目を「標準」にするか「最小サイズ」にするかの違いのようですね。

    PDF 形式で保存する のページを見てみると、画像レベルの品質を落としてまでサイズを小さくすることを優先するように見受けられますね。

    実際いくつか試してみましたが、文字が細かい表のようなものだと折り返しの位置が変わったりして、違いとして見えてくるようです。

    確認した中で大きな違いとしては最適化が「標準」だと10ページでおさまるシートが、「最小サイズ」だと折り返しの関係で文字の行数が増えて11ページになるという事象がありました。

    折り返しの扱いが変わる顕著な例としてはアルファベットの文字列の場合で、文章中に「ABC-DEF-GHI」みたいな並びの記号を入れていたのですがこの文字列が折り返しにかかった場合、

      最適化が「標準」の場合、「ABC-DEF-」までを表示し、「GHI」を次の行に表示する

      最適化が「最小サイズ」の場合「ABC-DEF-GHI」全てを折り返された次の行に表示する

    のような違いが出てきて、元々2行に収まる予定だったセルが3行になるようなケースが積み重なってページ数の違いにまで発展していました。

    とはいえ、最適化の項目を「最小サイズ」にすると、オプションを表示したときに「アクセシビリティ用のドキュメント構造タグ(M)」のチェックが外れているので、恐らくドキュメント構造タグに該当する項目は取り除かれていると思われます。

    目標としては、最適化の項目は「標準」のままオプションの「アクセシビリティ用のドキュメント構造タグ(M)」のチェックを外した状態のPDFを作成することですので、他に代替案が無さそうであれば頂いた内容で置き換えたいと思いますがもうしばらく模索してみたいと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  3. Anonymous
    2015-03-03T20:10:42+00:00

    よくわからないのですがこれかも?

     実際に手動の場合とファイルサイズを比べてみてください。

     Quality:=xlQualityStandard

     大きな表の場合だとファイルサイズが何倍も違ってきます。

     ↓ 

    Quality:=xlQualityMinimum

     PC上での見た目の画質は変わらないようです。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません
  4. Anonymous
    2015-03-03T04:03:31+00:00

    1シートだけの book を使って試してみましたが、結果は同じでした。

    ActiveWorkbook.ExportAsFixedFormat を使用した場合と、ActiveSheet.ExportAsFixedFormat を使用した場合のPDFファイルの容量も同じに見えるので、結果に違いは無さそうです。

    最終的にはブック全体に対応させることも考えているため、ChDir 行の後に以下の1文を追加して試した結果も同様でした。

    Sheets.select

    ActiveWorkbook を使用した場合と、ActiveSheetを使用した場合の違いはどこかにまとまっているものありますでしょうか。

    簡単に探してみましたが見つけられなかったため、ぜひ教えていただければと思います。

    この回答は役に立ちましたか?

    0 件のコメント コメントはありません