LoginSignup
1
3

More than 3 years have passed since last update.

Word VBA 文字がずれないMS明朝12ポイント日本語版設定

Last updated at Posted at 2019-11-24

Word 2016 Later

日本語 MS明朝 12ポイント
用紙A4 行数、字数自動設定

Version2.4は行数と字数を設定してみました(2021/05/07)

字数36字 行数38
Wordの文字サイズと行間の設定 読みやすい本の入稿データを作るコツ 株式会社イシダ印刷
によるとポイントの1.7倍がよいとのことで、このような設定をしてました。
といっても2行しかことなり異なりません。あとはグリッドは変わります。40行のほうが実務的にはカウントしやすい気もします。
余白は従前のとおりです。
余白上30㎜下20㎜左右25㎜

注意点

このVBAはたまに設定に失敗します。
特に標準スタイルが変更にならない場合がありますので、一度設定が反映されたか確認してください。
特にフォントは本文のフォントとかなっている場合、必ずMS明朝、英語は日本語フォントと同じにしてください。
GridLineに関しては文字単位で指定できないので、一旦マクロの記録で採寸して、それを加えることで成功しました。あと0.5字に1本と入呂して指定すると半角単位になります。。グリッドラインの設定の「字」とは幅も高さも全角1字です。半角も幅が半角なだけで、高さは全角です。
image.png

こんな感じで設定すると

image.png
image.png
image.png
image.png

見た目はきついですが完全に揃っているのがわかります。

image.png

これが0.5行、1字単位です

image.png

ステータスバーのユーザー設定も

image.png
ステータスバーの文字カウントは正しい文字数を示しません。文字カウント(スペースを除く)は正しい字数を示します。しかし、この機能はWord2016から追加されています。

クィックアクセスツールバー

GridLineの表示(ViewGridLinesWord
編集記号の表示/非表示(EastAsianEditingMarks)
を並べましょう。というか編集記号の表示/非表示って東アジア言語だけなのか。

理論

まず余白を決めて行数と、1行の文字数を自動的に決めます。
次に標準スタイルを調整します。
左より、カーニングを消します。句読点も詰めません。
また設定でレイアウトをみやすさ優先を禁止します。
なぜなら、ほかのスタイルはこの標準スタイルを基準に展開するからです。
また文字は行グリッドラインにつけます。そうしないと行のずれがわかりません。
さらに編集記号をすべて表示し、グリッドラインを表示します。
あとはまず標準スタイルで記述していきます。
見出しがあれば見出しを設定しますが、全て標準スタイルと同じ設定を反映します。

Word 2016 Later と 2013の違い

実は同じのハズなのですが、2016以降はなぜかカーリングのチェックが外れません。
そこで、2016はカーリングを100ポイント以上にして、事実上カーリングがかからないようにしています。
それでもおかしくなる場合は手動でチェックを外してください。

限界

この設定は日本語版のみです。違う言語ではそもそもフォントの名前が違います。また適正なフォントも12で良いのか。中国語ならもう少し大きくてもいいはずです。ひらがなを使わないので、字数が少なく、文字を詰めなくても良いからです。
IDで指定できるなどあればいいのですが。
また英語ではこういう文字のズレをMisAlignmentと呼ぶようです。Microsoft Word is Misalignment.みたいな。
しかし、Wordが文字がずれて困るというのは箇条書きに限定されます。
Wordの文字ズレで悩むのは中国語、韓国語、日本語くらいか。タイ語はちょっとわからないのですが。
しかし、等幅フォントがわからないため、多言語は設定がしづらいです。

限界 句読点がぶら下がらない

Word2010-2016:「句読点のぶら下げを行う」とは?

注!バージョンによって動作が異なります。2010では「句読点のぶら下げ」と「禁則処理」は別に動作していましたが、2013以降「句読点のぶら下げ」は「禁則処理」の1つになっています。つまり禁則処理を有効にしないと句読点のぶら下げも動作しません(場合によっては左揃え・両端揃えで挙動が変わる)

ThisDocument.FarEastLineBreakLevel = wdFarEastLineBreakLevelStrict '禁則処理 高レベル
wDoc.JustificationMode = wdJustificationModeExpand ' オプション文字体裁→間隔を詰めない

つまり左揃えの場合、いくら句読点をぶら下げにしても句読点がぶら下がらず、前の文字ともに次の行にきてしまいます。
2013以降の動作がおかしいのはこのせいなんですね。

回避方法

次の行に送られて困る行は両端揃えを指定する。ただし、これは字が次の行に送られている段落だけやります。めんどくさいですね。
すべて両端揃えにするとまた上下がずれてしまいます。
このため、2010互換モードにするのがその根本的な回答です。
Wordマクロ備忘録(Word VBA)

マイクロソフトの過ち

しかし、両端揃えでしか効かないというのは、マイクロソフトは2013句読点のぶら下げをプロポーショナル(文字の間のスペースを調整して、行末に空白ができず、美しく配置すること)の機能だと間違っているわけです。句読点のぶら下げは、ノンプロポーショナルな処理のためのものです。またデフォルトが両端揃えなのはプロポーショナルな処理にこだわっているためです。
最もこの前アウトラインの動画を見ましたが、アメリカで英語のWordにおいてもノータイムで両端揃えを解除していたので、「アメリカ人はプロポーショナルが好きなんだから愚かな日本人はユーザーは我慢しろ」というわけでもないようです。
じゃあ、なぜプロポーショナルにこだわるかというと、「そのほうが画面上で早く表示できるから」ということ以外内容です。以前互換性について研究したときにWordの開発者が表示速度にこだわっていることがわかっています。またExcelで演算誤差がある近似十進計算を辞めないのもそのほうが早いからです。このような開発者の方針を見る限りプロポーショナルは速度のためにみやすさを犠牲にしているということになります。
確かに、チラシ、スライドのような文字が少なく、1枚で完結するようなものであれば、プロポーショナルは有効です。
しかし、プロポーショナルは基本的に可読性に欠けており、読みやすさ(Readbility)を阻害します。これは人間がその行だけを読んでいるのではなく、全体を見ながら文書を読むため、ズレが有ると、脳はそれを補正するため、読解に時間がかかったり、誤読してしまうためです。
このため、解説書はプロポーショナルをしきりに勧めますが、これは誤っています。
きれいに上下が揃えばMS明朝はとても読みやすくなります。もう一つはHGS明朝Eでも良いです。この2つは等幅で完全に互換します。
Word2016で句読点のぶら下げができません
ベストアンサーは間違いで、これも左端揃えが原因だと思われます。

追記:

 表や箇条書きについては後半に補足を追加しました。特に箇条書きはバグかMSがバカなのでスタイルから箇条書きや段落番号の設定に行ってもリストの調整が出てきません。なので自分で書式を設定してから右クリックで設定します。たぶんこの技術は日本で初めて書くのかもしれないです。スタイルで箇条書きをするときみな諦めているのでしょう。
 また、ワードの書式設定は余白を決める、フォントサイズを決める、行単位が決まるというアルゴリズムをとっているようです。なので行間を調整するとか、1ページの行数を決めるというのが原則として苦手です。また、1行の字数も決めるのも苦手です。そして、1行内の字数を決めるのが下手くそな割に、段落の冒頭を1文字下げる、というような手続きはmm単位にするとずれます。なのにWordは勝手に設定します。ずれないためには必ず字数単位で設定する必要があります。標準スタイルで字数で設定しない場合、ALTキーでスライドするなどの手段を取るとmm単位になり、ますます他と合わなくなります。
なお、ActiveWindowを使うため、複数のWordを開いて使用しないでください。エラーの原因になります。必ず一つのWordファイルを開いた状態でVBAを実行してください。

追記その2

等幅フォントは英語では
monospace font
monospaced
fixed width font
nonproportional
ちなみに、英語圏もプロポーショナルは苦手です。
What are some typewriter fonts in Microsoft Word?
The 17 best typewriter fonts
4ヶ月前の記事です。わざわざ有料のものが売ってあるくらいです。Olivettiとかアガサ・クリスティまであります。
Font Library--Lucida Sans Typewriter font family
というかよく考えると公式が入れてあるのでした。ただし Corier New と Lucida Sans Typewriterです。
Is Courier New the only equally-spaced font in word 2010
こちらでMVPの人は答えた上で
https://www.fontspace.com/category/monospaced
こちらのフリーのフォントサイトを紹介しています。

ワープロとの相違

ワードプロセッサー(ワープロ)はもう使われない製品ですが、ワープロはさらに和文タイプライターから出発しています。
ここから見ると、まず余白を決めて、1ページの行数、1行の文字数を決めてから打ち始める、ということがまずありました。
文書の余白自体はあとから綴じることを考えると、パンチの穴から少し離す必要があり、概ね25ミリ両側に空けます。すると縦横と差を出すため、上が30mmとして、下は字数を稼ぐため20mm程度ということが決まっていきました。
このため、1行の高さは固定値設定と言えます(最小値でもいいけど)。なので、まず「ずれない」ということが大前提でした。
文字間のピッチが可変で微妙に変わるということはタイプライターでは非常に困難だったのです。
時代が代わり、ワープロが消えて、見栄えがよいプロポーショナルフォント、ピッチ、行幅を調整して美しい文書を作成するのがWordだったのです。しかし、その美しさは英文が前提で、漢字やハングルは対象外でした。
その大きな代償として、行数や字数が定まらない、ずれる、行の高さがわからず1ページの行数が計算困難という自体を招いたわけです。
見解が分かれますが、文書の作成はそうした文化の流れがあります。そこからすると、1行単位で決めるWordというのは非常にありえないわけです。1行って何ミ?1cmに何行?というのがわかりません。決めてもMM単位ではなく、ポイント単位ですからね。考えてもみてください。ずれない設定をするためにマクロを起動するアプリ(ソフト)っておかしいです。生産性も効率も非常に低い。現に韓国では未だにアレアハングルがデファクトスタンダードです。

英語、数字が切れる場合

このときは1行全体もしくはそのずれる部分を次行においやるために均等割り付けを設定します。
この時、文章全体にかかないようにします。
もしくはそこだけ両端揃えにします。
もしくはタブを使います。
対応しきれない場合には
オプション、文字体裁
ホーム→段落→体裁タブ
改行時の処理 英単語の途中で改行するのチェックを外す
文字幅と間隔 日本語と英語の間隔を自動調整する 日本語と数字の間隔を自動調整する にチェックを入れる

タブだと文字が切れないため、検索が効くためです。
とにかく改行やスペースを入れないでください。英単語の途中で改行するは改行はしますが、改行記号は入りません。

段落の字下げについて

 通常の文章はこのように1文字さげて段落が始まります。
この時、上記でも記載したように、タブ、空白で字を下げるのではなく、標準スタイルの段落設定で、ぶら下げ、字下げで対応します。この時必ず字数単位で設定します。もし、字数ではなくmmで表示されている場合には強引に「1字」というように入力して字数単位に買えてください。

Word 2010について

Microsoft Word 2010の場合、以下の部分を変更する必要があります。

Gridの幅、高さ
Const GridHorizontalWidth = 4.24
Const GridVerticalHeight = 3.1

Word2010の場合、グリッドラインがなぜか0.99字になってしまいます。この場合、上記の値に定数を変更してみてください。
駄目なときは上記の手動で設定する方法で調整してください。
ただし、以下のマクロで互換モードにして、Word2013以降で開いている場合には関係がありません。
また、文字と行数を指定しているため、この部分は現在はコメントアウトしています。

配置ガイド

Word 2010は配置ガイド機能がありません
Word2013のコードでいうと下記の部分はコメントアウトします。

'With Options '配置ガイドの設定 Word 2013 Later
'    .DisplayGridLines = True
'    .DisplayAlignmentGuides = False 'ここをfalseにしないとGridLineは表示されない
'    .PageAlignmentGuides = True
'    .MarginAlignmentGuides = True
'    .ParagraphAlignmentGuides = True
'End With
CollapsedByDefault 既定で折りたたみ

規定で折りたたみはアウトラインが本文レベルの場合、設定する必要がありません。
(Wordマクロ)アウトラインレベルの設定の仕方

アウトラインは基本的にスタイルと組み合わせて使います。「既定で折りたたみ」の設定を除けば、アウトライン単体で設定することは滅多にありません。
アウトラインレベルが細かく設定されている文章でマクロの記録のコードをそのまま使うと、アウトラインレベルも変わってしまうということが起こり得ます。

Word2010の場合このチェックがシビアで下記のコードのうち、ParagraphFormatのCollapsedByDefaultはエラーになるのでコメントアウトしします。Word2013以降はこれがゆるいので、あってもなくてもエラーになりません。気になる場合には以下と同様、コメントアウトしてください。なお、ここでは標準の書式を決めるため、アウトラインレベルは意識して本文に設定しているので、マクロの記録をそのまま使っているのではありません。

With Selection.ParagraphFormat
' <省略>
    .OutlineLevel = wdOutlineLevelBodyText
'    .CollapsedByDefault = False
End With
' <省略>
With ActiveDocument.Styles(wdStandardStyleName).ParagraphFormat '標準スタイル、段落の設定
' <省略>
    .OutlineLevel = wdOutlineLevelBodyText
'    .CollapsedByDefault = False
End With

また、マクロでは設定できませんが
全般 ヒントのスタイル
image.png
簡単操作 見出しの展開
image.png

貼り付けのオプション

PasteFormatFromExternalSource
Wdpasteoptions Enum
推奨はもとの書式を維持するになっていますが、解説ではWebページを意識しているようです。

image.png
もう一つ貼付け時に自動調整する、の設定をクリックしたものがこれです。この設定も重要です。
image.png

書式の履歴を維持及びスタイルウィンドウのオプション

Word2013:スタイル+書式が表示される
image.png
また書式の履歴を維持するという機能も不要です。
Word2013で 変更されたスタイルの表示をなくしたい

文字数や行数をしていするときのコードの違い

Document.PageSetupで決定します。
Layoutmodeの定数の違いに注意してください。
Layoutmodeには他に原稿用紙があります。
また、指定する前にモードを変えないと失敗するときがあります。またWord自体が落ちるときがあります。
このため DoEventsを入れました。

文字数と行数を指定

    .LayoutMode = wdLayoutModeGrid: DoEvents
    .CharsLine = 36: DoEvents ' 文字数を36 2021/05/07
    .LinesPage = 38: DoEvents '行数を38 2021/05/07 文字が多いときはフォントサイズの1.7倍 18PTくらい
    .LayoutMode = wdLayoutModeGrid: DoEvents

行数のみ指定

    .LayoutMode = wdLayoutModeLineGrid: DoEvents
    '.CharsLine = 36: DoEvents
    .LinesPage = 38: DoEvents
    .LayoutMode = wdLayoutModeLineGrid: DoEvents

自動(フォントとフォントサイズのみ指定)

.LayoutMode = wdLayoutModeDefault

Version2.5

2.4で設定ができていなかったWebオプション周りを設定しました。
[オプション]→[詳細設定]→[全般]→[Webオプション]→{フォント}タブ 文字セット
の設定をWebで初めてしめしたサンプルでしょう。
ページのレイアウト
Word のオプション ([詳細設定])

Version2.4テーマの設定、テーマのフォント設定

実はテキストボックスの文字はテーマが優先され、そこでレイアウトが変わります。このため、2010のイメージを踏襲するため、テーマを後方互換にしています。また、たまに游明朝に変わったり見出しのフォント、本文のフォントはテーマで決定されています。
これはOffice Themeというもので、主としてパワーポイントで話題になります。しかし、このOfficeThemeは実はExcel、Word、Powerointで影になり日向になり影響します。カラーパレットの12色もそうです。

スタイルの自動更新、オフ

スタイルの自動更新をTrueにしていると、右寄せするとすべての標準スタイルの部分が右寄せされるということが起きます。

使い方

まずWordの設定でマクロを有効にします。
開発タブをを表示します。
この設定は一度行うと変更しない限り不要です。
ワードを起動し、新規作成にします
ALT+F11でVBEを開きALT I Mで標準モジュールを挿入します。
下のVBAのコードを貼りつけます。

Webオプション

image.png

image.png

オートコレクト

image.png

オートフォーマット

image.png

Word 2016 Later

Option Explicit


Sub WordSetJapaneseStandardSytleMincho()
'Version 2.5 20210508_2016Later
' 文字体裁、スタイルのオプションを追加
'Version 2.4 20210507_2016Later
' ThemeをOffice2007-2010スタイルにすることによって、さ
'Version 2.3 20191206_2016Later
'MS明朝という等幅(とうはば)フォント、12ポイントを基準としてページを設定し、編集に向いたオプションを設定し、さらに、ズレがない標準スタイルを形成します。
'用紙 A4Width  210mm* Hight 297mm
'余白 上30mm,下20mm,左右25mm
'For Word 2016 Japanese Document
'This No Misalignment Setting is effectiive only Japanese Writting
Const JapaneseNormalStyleName = "標準" 'For Japanese
Const JapaneseSystemStandardFont = "MS 明朝" 'For Japanese
Const wdStandardStyleName = "標準"
Const wdMSMincho = "MS 明朝"
Const DefaultFontSize = 12
Const GridHorizontalWidth = 4.233333
Const GridVerticalHeight = 3.175
Dim wdOmathCorrect As OMathAutoCorrect '
Dim wDoc As Word.Document: Set wDoc = ThisDocument: wDoc.Activate
Dim wWin As Word.Window: Set wWin = ActiveWindow
Dim bl6432  As Boolean
On Error Resume Next
'印刷レイアウト強制
If wWin.View.SplitSpecial = wdPaneNone Then
   wWin.ActivePane.View.Type = wdPrintView
Else
   wWin.View.Type = wdPrintView
End If
ThisDocument.KerningByAlgorithm = False
' bl6432の確認
'VBSでは64bitで起動するためProgramfilesが64になる
With CreateObject("VBScript.RegExp")
.Global = True
.MultiLine = False
.IgnoreCase = False
.Pattern = "\(x86\)"
If .Test(Application.Path) = True Then bl6432 = False Else bl6432 = True 'テストに合致したら32bit
End With

If bl6432 Then
' 64 bit Word
' DocumentTheme
wDoc.ApplyDocumentTheme (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%") & _
"\Microsoft Office\root\Document Themes 16\Office Theme.thmx")
' Docume ThemeFontScheme(64 bit)
wDoc.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeLatin).Name = JapaneseSystemStandardFont
wDoc.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeEastAsian).Name = JapaneseSystemStandardFont
wDoc.DocumentTheme.ThemeFontScheme.MinorFont(msoThemeLatin).Name = JapaneseSystemStandardFont
wDoc.DocumentTheme.ThemeFontScheme.MinorFont(msoThemeEastAsian).Name = JapaneseSystemStandardFont

' Document ThemeColorScheme (64 bit)
wDoc.DocumentTheme.ThemeColorScheme.Load (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%") & _
"\Microsoft Office\root\Document Themes 16\Theme Colors\Office 2007 - 2010.xml")

' Document ThemeEffectScheme (64 bit)
ActiveDocument.DocumentTheme.ThemeEffectScheme.Load (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles%") & _
"\Microsoft Office\root\Document Themes 16\Theme Effects\Office 2007 - 2010.eftx")
Else
' 32 bit Word
' DocumentTheme
wDoc.ApplyDocumentTheme (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles(x86)%") & _
"\Microsoft Office\root\Document Themes 16\Office Theme.thmx")

' Docume ThemeFontScheme
ActiveDocument.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeLatin).Name = JapaneseSystemStandardFont
ActiveDocument.DocumentTheme.ThemeFontScheme.MajorFont(msoThemeEastAsian).Name = JapaneseSystemStandardFont
ActiveDocument.DocumentTheme.ThemeFontScheme.MinorFont(msoThemeLatin).Name = JapaneseSystemStandardFont
ActiveDocument.DocumentTheme.ThemeFontScheme.MinorFont(msoThemeEastAsian).Name = JapaneseSystemStandardFont
' Document ThemeColorScheme
ActiveDocument.DocumentTheme.ThemeColorScheme.Load (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles(x86)%") & _
"\Microsoft Office\root\Document Themes 16\Theme Colors\Office 2007 - 2010.xml")
' Document ThemeEffectScheme
ActiveDocument.DocumentTheme.ThemeEffectScheme.Load (CreateObject("WScript.Shell").ExpandEnvironmentStrings("%ProgramFiles(x86)%") & _
"\Microsoft Office\root\Document Themes 16\Theme Effects\Office 2007 - 2010.eftx")
End If
 Word2010の互換モードにすると日付コンテンツコントロールが使えないが、行末の句読点は左揃えでも正常になる。
 日付コンテンツコントロールという誰も使わない機能が使えないなど、機能が一部制限されるが、普通は影響がない
' 今回はセカンドベストのためあえてコメント化している
' ThisDocument.SetCompatibilityMode wdWord2010 

' 文字体裁オプション 日本語で重要な部分 ただし、たまに落ちる時がある。
With wDoc
.FarEastLineBreakLanguage = wdLineBreakJapanese ' 禁則処理用の言語
.JustificationMode = wdJustificationModeExpand ' オプション文字体裁→間隔を詰めない
.FarEastLineBreakLevel = wdFarEastLineBreakLevelStrict ' 禁則処理 高レベル
End With
' Document Theme 設定終了 -------------------------
'横書きを強制する場合はコメントアウトする
'wDoc.Select
'Selection.Orientation = wdTextOrientationHorizontal '横書き 0 縦書き Const wdTextOrientationVerticalFarEast = 1
Selection.WholeStory
With wDoc.PageSetup
    .LineNumbering.Active = False
    .Orientation = wdOrientPortrait
    .TopMargin = MillimetersToPoints(30)
    .BottomMargin = MillimetersToPoints(20)
    .LeftMargin = MillimetersToPoints(25)
    .RightMargin = MillimetersToPoints(25)
    .Gutter = MillimetersToPoints(0)
    .HeaderDistance = MillimetersToPoints(15)
    .FooterDistance = MillimetersToPoints(17.5)
    .PageWidth = MillimetersToPoints(210)
    .PageHeight = MillimetersToPoints(297)
    .FirstPageTray = wdPrinterDefaultBin
    .OtherPagesTray = wdPrinterDefaultBin
    .SectionStart = wdSectionNewPage
    .OddAndEvenPagesHeaderFooter = False
    .DifferentFirstPageHeaderFooter = False
    .VerticalAlignment = wdAlignVerticalTop
    .SuppressEndnotes = False
    .MirrorMargins = False
    .TwoPagesOnOne = False
    .BookFoldPrinting = False
    .BookFoldRevPrinting = False
    .BookFoldPrintingSheets = 1
    .GutterPos = wdGutterPosLeft
    .LayoutMode = wdLayoutModeGrid: DoEvents
    .CharsLine = 36: DoEvents ' 文字数を36 2021/05/07
    .LinesPage = 38: DoEvents '行数を38 2021/05/07 文字が多いときはフォントサイズの1.7倍 18PTくらい
    .LayoutMode = wdLayoutModeGrid: DoEvents
End With
With Options
        .UseCharacterUnit = True '文字単位で設定する根本原因
        .AutoFormatAsYouTypeApplyHeadings = False
        .AutoFormatAsYouTypeApplyBorders = False
        .AutoFormatAsYouTypeApplyBulletedLists = False
        .AutoFormatAsYouTypeApplyNumberedLists = False
        .AutoFormatAsYouTypeApplyTables = False
        .AutoFormatAsYouTypeReplaceQuotes = True
        .AutoFormatAsYouTypeReplaceSymbols = True
        .AutoFormatAsYouTypeReplaceOrdinals = True
        .AutoFormatAsYouTypeReplaceFractions = False
        .AutoFormatAsYouTypeReplacePlainTextEmphasis = False
        .AutoFormatAsYouTypeReplaceHyperlinks = False 'HyperLink UNCを自動的に置き換える
        .AutoFormatAsYouTypeFormatListItemBeginning = True
        .AutoFormatAsYouTypeDefineStyles = False
        .TabIndentKey = False
        .AutoFormatAsYouTypeApplyFirstIndents = False
        .AutoFormatAsYouTypeApplyDates = False
        .AutoFormatAsYouTypeMatchParentheses = True
        .AutoFormatAsYouTypeInsertOvers = False ' Insで上書きを有効にする False
        .AutoFormatAsYouTypeDeleteAutoSpaces = False
        .AutoFormatApplyHeadings = True
        .AutoFormatApplyOtherParas = True
        .AutoFormatReplaceQuotes = True
        .AutoFormatReplaceSymbols = True
        .AutoFormatReplaceOrdinals = True
        .AutoFormatReplaceFractions = False
        .AutoFormatReplacePlainTextEmphasis = True
        .AutoFormatPreserveStyles = True 'True の 場合文書または指定範囲の書式が自動的に設定すると、以前に適用されたスタイルは保持されます。 読み取り/書き込みが可能な Boolean です。
        .AutoFormatPlainTextWordMail = True
        .AutoFormatApplyFirstIndents = False ' Trueにすると日本語で1行下げると、次の段落も1行下げられる。しかし、スタイルでコントロールしたほうがよいので、False
        .AutoFormatMatchParentheses = True
        .AutoFormatDeleteAutoSpaces = False
        .AutoFormatReplaceFarEastDashes = True
    End With
    With AutoCorrect
        .CorrectInitialCaps = False '2文字目を小文字にする
        .CorrectSentenceCaps = True
        .CorrectDays = True
        .CorrectCapsLock = True
        .ReplaceText = True '入力中に自動修正する
        .ReplaceTextFromSpellingChecker = True
        .CorrectKeyboardSetting = False
        .DisplayAutoCorrectOptions = True 'True AutoCorrectボタンを表示する
        .CorrectTableCells = True
    End With
    If Not Application.OMathAutoCorrect Is Nothing Then
    Set wdOmathCorrect = Application.OMathAutoCorrect
    With wdOmathCorrect
        .UseOutsideOMath = False
        .ReplaceText = True
    End With
End If
Options.LabelSmartTags = False
ActiveWindow.View.ShowHiddenText = True '編集用のため隠し文字を表示
Options.PrintHiddenText = True '編集用のため隠し文字が印刷される設定
wDoc.JustificationMode = wdJustificationModeExpand ' オプション文字体裁→間隔を詰めない
With Selection.ParagraphFormat
.LeftIndent = MillimetersToPoints(0)
    .RightIndent = MillimetersToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle
    .Alignment = wdAlignParagraphLeft
    .WidowControl = False
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = MillimetersToPoints(0)
    .OutlineLevel = wdOutlineLevelBodyText
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .MirrorIndents = False
    .TextboxTightWrap = wdTightNone
    .CollapsedByDefault = False
    .AutoAdjustRightIndent = True
    .DisableLineHeightGrid = False
    .FarEastLineBreakControl = True
    .WordWrap = True
    .HangingPunctuation = True
    .HalfWidthPunctuationOnTopOfLine = False ' 2021/05/07 行頭の記号を2分の1の幅にする False
    .AddSpaceBetweenFarEastAndAlpha = False
    .AddSpaceBetweenFarEastAndDigit = False
    .BaseLineAlignment = wdBaselineAlignAuto
    End With
    Selection.Font.Size = DefaultFontSize
    Selection.Font.Name = wdMSMincho
    Selection.Font.Name = wdMSMincho
    With Selection.Font
    .NameFarEast = wdMSMincho
    .NameAscii = wdMSMincho
    .NameOther = wdMSMincho
    .Name = wdMSMincho
    .Size = DefaultFontSize
    .Bold = False
    .Italic = False
    .Underline = wdUnderlineNone
    .UnderlineColor = wdColorAutomatic
    .StrikeThrough = False
    .DoubleStrikeThrough = False
    .Outline = False
    .Emboss = False
    .Shadow = False
    .Hidden = False
    .SmallCaps = False
    .AllCaps = False
    .Color = wdColorAutomatic
    .Engrave = False
    .Superscript = False
    .Subscript = False
    .Spacing = 0
    .Scaling = 100
    .Position = 0
    .Kerning = 0
    .Animation = wdAnimationNone
    .DisableCharacterSpaceGrid = False
    .EmphasisMark = wdEmphasisMarkNone
    .Ligatures = wdLigaturesNone
    .NumberSpacing = wdNumberSpacingTabular
    .NumberForm = wdNumberFormOldStyle
    .StylisticSet = wdStylisticSetDefault
    .ContextualAlternates = 0
End With
wDoc.Styles(wdStandardStyleName).AutomaticallyUpdate = False ' 2021/05/07 Trueだと右寄せにするとすべて右寄せになるなど不合理な動きをするためFalseに変更
'Word 2016 標準 Styleのチューニング
If Application.Version = "16.0" Then
With wDoc.Styles(wdStandardStyleName).Font '標準スタイル、フォントの設定
    .NameFarEast = wdMSMincho
    .NameAscii = wdMSMincho

    .Name = wdMSMincho
    .Size = DefaultFontSize
    .Bold = False
    .Italic = False
    .Underline = wdUnderlineNone
    .UnderlineColor = wdColorAutomatic
    .StrikeThrough = False
    .DoubleStrikeThrough = False
    .Outline = False
    .Emboss = False
    .Shadow = False
    .Hidden = False
    .SmallCaps = False
    .AllCaps = False
    .Color = wdColorAutomatic
    .Engrave = False
    .Superscript = False
    .Subscript = False
    .Scaling = 100
    .Kerning = 100 'ここを0にしてカーニングのチェックがはずれる場合は0でよい。
    .Animation = wdAnimationNone
    .DisableCharacterSpaceGrid = False
    .EmphasisMark = wdEmphasisMarkNone
    .Ligatures = wdLigaturesNone
    .NumberSpacing = wdNumberSpacingTabular
    .NumberForm = wdNumberFormOldStyle
    .StylisticSet = wdStylisticSetDefault
    .ContextualAlternates = 0
End With
With ActiveDocument.Styles(wdStandardStyleName).ParagraphFormat '標準スタイル、段落の設定
    .LeftIndent = MillimetersToPoints(0)
    .RightIndent = MillimetersToPoints(0)
    .SpaceBefore = 0
    .SpaceBeforeAuto = False
    .SpaceAfter = 0
    .SpaceAfterAuto = False
    .LineSpacingRule = wdLineSpaceSingle '1行あける
    .Alignment = wdAlignParagraphLeft ' 左揃え
    .WidowControl = False
    .KeepWithNext = False
    .KeepTogether = False
    .PageBreakBefore = False
    .NoLineNumber = False
    .Hyphenation = True
    .FirstLineIndent = MillimetersToPoints(0)
    .OutlineLevel = wdOutlineLevelBodyText 'アウトラインレベルを本文に
    .CharacterUnitLeftIndent = 0
    .CharacterUnitRightIndent = 0
    .CharacterUnitFirstLineIndent = 0
    .LineUnitBefore = 0
    .LineUnitAfter = 0
    .MirrorIndents = False
    .TextboxTightWrap = wdTightNone
    .CollapsedByDefault = False
    .AutoAdjustRightIndent = False
    .DisableLineHeightGrid = False
    .FarEastLineBreakControl = True
    .WordWrap = True
    .HangingPunctuation = True ' 句読点のぶら下げ 有効
    .HalfWidthPunctuationOnTopOfLine = False ' 2021/05/07 変更
    .AddSpaceBetweenFarEastAndAlpha = False
    .AddSpaceBetweenFarEastAndDigit = False
    .BaseLineAlignment = wdBaselineAlignAuto
End With
wDoc.Styles(wdStandardStyleName).NoSpaceBetweenParagraphsOfSameStyle = False '同じスタイルの場合は段落間にスペースを追加しない
With wDoc.Styles(wdStandardStyleName).ParagraphFormat
    If .TabStops.Count > 0 Then .TabStops.ClearAll 'ここで標準スタイルのタブはクリアされる。不要な場合は削除すること。
    With .Shading
        .Texture = wdTextureNone
        .ForegroundPatternColor = wdColorAutomatic
        .BackgroundPatternColor = wdColorAutomatic
    End With
        .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
        .Borders(wdBorderRight).LineStyle = wdLineStyleNone
        .Borders(wdBorderTop).LineStyle = wdLineStyleNone
        .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
With .Borders
    .DistanceFromTop = 1
    .DistanceFromLeft = 4
    .DistanceFromBottom = 1
    .DistanceFromRight = 4
    .Shadow = False
End With
End With
With wDoc.Styles(wdStandardStyleName) ' 言語の設定
    .LanguageID = wdJapanese
    .NoProofing = False
    .Frame.Delete
    .LanguageIDFarEast = wdJapanese '指定したオブジェクトの東アジア言語を設定または返します。
    .Visibility = False 'Trueにすると表示されない
End With
End If
With Application.AutoCorrect
    .CorrectInitialCaps = True
    .DisplayAutoCorrectOptions = True
    .CorrectTableCells = False ' 表の先頭文字を大文字にする
End With
With Options
    .AutoFormatApplyLists = False
    .AutoFormatApplyBulletedLists = False
    .LabelSmartTags = False
    .PrecisePositioning = True
End With
With wDoc
    .SnapToGrid = False
    .SnapToShapes = False
' Gridの設定はマクロで行うときは文字単位にできない。
' フォントサイズはもちろん、1行の文字数、行の間隔でも適正値が変更になる
' このためフォントごとにグリッドの設定をマクロの記録で行い、その記録で変更する必要がある。
' この設定はMS明朝、HGS明朝E12ポイントで設定 36字 38行
'    .GridDistanceHorizontal = MillimetersToPoints(GridHorizontalWidth)
'    .GridDistanceVertical = MillimetersToPoints(GridVerticalHeight)
        .GridDistanceHorizontal = MillimetersToPoints(2.2)
        .GridDistanceVertical = MillimetersToPoints(6.5)
        .GridOriginHorizontal = MillimetersToPoints(25)
        .GridOriginVertical = MillimetersToPoints(30)
        .GridSpaceBetweenHorizontalLines = 1
        .GridSpaceBetweenVerticalLines = 1
        .GridOriginFromMargin = True
End With
ThisDocument.FarEastLineBreakLevel = wdFarEastLineBreakLevelStrict '禁則処理 高レベル
'ActiveWindow.View.ShowTextBoundaries = True にすると文字の入力している範囲が行ごとに枠で表示される。グリッドを消すと有効に
'その他 アンカー等を追加
With wWin.View
.ShowAll = True '編集記号の表示
.ShowTextBoundaries = False 'Trueだと補足のようになる
.ShowObjectAnchors = True 'アンカーを設定した場合アンカーを表示
.ShowHighlight = True '蛍光ペンを表示
.ShowDrawings = True  '描画ツールを使用して作成したオブジェクトを印刷レイアウト表示で表示
.SeekView = wdSeekMainDocument
'.SeekView = wdSeekCurrentPageFooter
'.SeekView = wdSeekCurrentPageHeader
'.SeekView = wdSeekEndnotes '脚注を表示
End With
With Options '配置ガイドの設定 Word 2013 Later
    .DisplayGridLines = True
    .DisplayAlignmentGuides = False 'ここをfalseにしないとGridLineは表示されない
    .PageAlignmentGuides = True
    .MarginAlignmentGuides = True
    .ParagraphAlignmentGuides = True
End With
' スタイル
    Options.ShowFormatError = False ' 書式の不統一を記録する False
    Options.FormatScanning = False  書式の履歴を維持する False これは変更履歴とは関係がない
    Application.ShowStylePreviews = True ' [スタイル] 作業ウィンドウの [プレビューを表示する]
    Application.RestrictLinkedStyles = False ' RestrictLinkedStyles '[ スタイル] 作業ウィンドウの [ リンクされたスタイルを使用不可にする]
    ActiveDocument.FormattingShowFilter = wdShowFilterStylesAll  ' すべてのスタイルを表示する Const wdShowFilterStylesAll = 2, wdShowFilterStylesInUse = 1,  wdShowFilterStylesAvailable = 0 , wdShowFilterFormattingRecommended = 5, wdShowFilterFormattingInUse = 3, wdShowFilterFormattingAvailable = 4
    ActiveDocument.FormattingShowFont = False
    ActiveDocument.FormattingShowParagraph = False
    ActiveDocument.FormattingShowNumbering = False
    ActiveDocument.FormattingShowNextLevel = False  [スタイル ウィンドウ オプション] ダイアログ ボックスの [前のレベルが使用されている場合に次のレベルの見出しを表示する] 

' 、貼り付けのオプション 校正のオプション----- ここから先は手動で設定しても良い
'    CommandBars("Styles").Visible = False
    Application.Options.PasteMergeFromPPT = True
    Application.Options.PasteMergeFromXL = True
    Application.Options.PasteMergeLists = True ' リストとリストの書式を結合
    Application.Options.PasteOptionKeepBulletsAndNumbers = True ' [貼り付けのオプション] ショートカットメニューの [テキストのみ保持] を選択するときに、箇条書きと段落番号を保持するかどうかを表すブール型 (Boolean) を設定します。 値の取得と設定が可能です
    Application.Options.SmartCutPaste = True '選択範囲の貼り付け True
    'Options.CloudSignInOption = True ' [ Word のオプション] ダイアログボックスの [保存] タブの [サインインが必要かどうかにかかわらず、保存する追加の場所を表示する] 通常は書式と関係ないので設定しない
    Options.CtrlClickHyperlinkToOpen = True ' CTRL キーを押しながらクリックするとハイパーリンクを開く。 面倒だが、ダイレクトに飛ぶより安全のためTrue 好み次第でFalse
    Options.EnableLiveDrag = True ' [ドラッグ時にドキュメントのコンテンツを更新する]
    Options.EnableLivePreview = True ' [リアルタイムのプレビュー表示機能を有効にする]
    Options.EnableMisusedWordsDictionary = True ' 用法が誤っている単語を調べるときに、形容詞と副詞、比較級と最上級、接続詞としての "like"、"nor" と "or"、"what" と "which"、"who" と "whom"、測定の単位、接続詞、前置詞、および名詞の誤った用法が検索される
    'Options.EnableProofingToolsAdvertisement = False ' [言語] タブ[その他の校正ツールをダウンロードする必要があるときに通知を表示する]  書式と直接関連しないので設定しない
    Options.IgnoreMixedDigits = True '  [スペルチェックと文章校正] タブ [数字を含む単語は無視する]
    Options.DisplayPasteOptions = True '  [ 貼り付けオプション] ボタンを表示
    Options.ConvertHighAnsiToFarEast = False ' 文書を開いたときに東アジアのフォントに関連付けられている文字列が適切なフォントに変換する。日本語では必要がないのでFalse
    ThisDocument.ShowGrammaticalErrors = True
    Options.CheckGrammarAsYouType = False ' 文書校正時にエラーに自動的にマークを付ける。エラーとみなしているものが大量の場合処理が重くなるのでFalse
    Options.CheckGrammarWithSpelling = True '  [文章校正] タブの & [スペルチェックと文章校正を行う] 上記のCheckGrammarAsYouTypeと同時にTrueにするとこちらが優先される
    Options.CheckSpellingAsYouType = False 'スペルチェック時に自動的にスペルミスにマークする 重くなるのでFalse
' Web Options ----- ここから先は手動で設定しても良い ポイントはLongfilenameを許可するか、このサンプル例は許可しない
With Application.ActiveDocument.WebOptions
.BrowserLevel = wdBrowserLevelMicrosoftInternetExplorer6: DoEvents
.AllowPNG = True
.Encoding = msoEncodingUTF8 ' 65001
' .FolderSuffix
.OptimizeForBrowser = True
.OrganizeInFolder = True
.PixelsPerInch = 96 '[オプション]→[詳細設定]→[全般]→[Webオプション]→{図}タブ 対象モニター
.RelyOnCSS = True
.RelyOnVML = True
.ScreenSize = msoScreenSize1024x768 'Const msoScreenSize1024x768 = 4, msoScreenSize1920x1200 = 10
.TargetBrowser = msoTargetBrowserIE6
.UseLongFileNames = False
End With
With Application.DefaultWebOptions 'Application Level のWeb Option
.UpdateLinksOnSave = True
.CheckIfOfficeIsHTMLEditor = True
.CheckIfWordIsDefaultHTMLEditor = False
.AlwaysSaveInDefaultEncoding = True ' [オプション]→[詳細設定]→[全般]→[Webオプション]→{エンコード}タブ 常にWebページを既定のエンコードで保存する
.SaveNewWebPagesAsWebArchives = True
' [オプション]→[詳細設定]→[全般]→[Webオプション]→{フォント}タブ 文字セット日本語 のプロポーショナルと固定フォントの設定
.Fonts.Item(msoCharacterSetJapanese).FixedWidthFont = "MS ゴシック"
.Fonts.Item(msoCharacterSetJapanese).FixedWidthFontSize = 12
.Fonts.Item(msoCharacterSetJapanese).ProportionalFont = "MS P ゴシック"
.Fonts.Item(msoCharacterSetJapanese).ProportionalFontSize = 12
End With
' 代替フォントの指定 効果不明のためコメントアウト
'Application.SubstituteFont UnavailableFont:="MS 明朝", SubstituteFont:="游明朝"
End Sub
表において、異なるサイズのフォントを使用すると、行が広がる現象

1行の高さは上記のコードではWordが勝手に決めています。ここからはみ出すと行が飛びます。そうしたことが起きる場合には、
「1ページの行数を指定時に文字を行グリッド線に合わせる」設定を外します。
表の行の高さを詰めたい
また、ここから分かる通り、異なる大きさのフォントを使用する場合、表の中のフォントの標準サイズを12から10.5に変えます。
10.5だと見出しで12ポイントを使っても、隣り合うセルで行が広がるということがないわけです。
Wordの行間が広がってしまう時の対応方法
ただし、このように「1ページの行数を指定時に文字を行グリッド線に合わせる」を外す方を標準にするのは当方では取りません。
なぜなら、これをやってしまうと違うページで違う行数になるためです。見開きで見ると行数がずれておかしくなり、1ページの行数が違うとミスなのか仕様なのかわかりません。このひとはWordで仕事をしたことがないか、仕事をする能力がないか、そもそも仕事をしたことがないですね。(大暴言)まあそのくらい文書に対する根本的なデザインの思考が違います。字がずれてまずいという場合は行もずれたらまずいということが普通です。生産性が低いと言えば低いですが、厳密性が要求されるほど注文も厳しくなります。そういうところもあるのでWordもややこしくなるということです。

補足その2 箇条書き等で、記号や番号のあとに空白、タブを入れない設定をする場合

これはVBAでは難しいです。また、Styleの設定から設定することができません。
この場合、次のようにしてまず望ましい箇条書きの設定をして、スタイルに選択した場所の設定を反映させる機能を使います。
いったん文字を入力し、見出し1スタイルにします。次に番号の設定をします。このあとリストのインデント調整を選択し、タブを削除します。
image.png
image.png
image.png
なしでOKにする。
スタイルの設定から箇条書きを設定しようとしても、なぜかこのリストの調整は出てこない。
image.png
今回は見出し1に[1.スペースなし]という書式の番号を設定した。これは標準ではないので、手動で調整して設定したことになる。これを見出し1を右クリックして「選択個所と一致するように見出し1を更新する」をクリックする。これで箇条書きや段落番号は自分で設定した書式が反映される。

補足その3 WordのオプションはVBAではなくレジストリで扱うものがある

Wordの「ファイル内のイメージを圧縮しない」のチェックをデフォルトでオンにしたい Answers.Microsoft.com

チェックを入れて終了すると、次回起動したときはチェックがなしになりますので、確認したところ、レジストリにオプションキーの追加が必要となるようです。
※レジストリの操作は間違えないように注意して行うようにしてください。
Windows のバージョンが不明ですが、検索ボックスまたはファイル名を指定して実行などで、レジストリ エディタ (regedit.exe) を起動して、HKEY_CURENT_USER の下にある Word の Options キーを展開します。
Options キーに AutomaticPictureCompressionDefault キーエントリーがある場合は、値を 0 に変更し、キーがない場合は追加作成します。
HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Word\Options キーに
AutomaticPictureCompressionDefault キーを追加し、種類:REG_DWORD で値: 0 にする。
上記の下線部は Office のバージョンを示す番号です。
12.0 : Office 2007
14.0 : Office 2010
15.0 : Office 2013
16.0 : Office 2016
(いか画像等元サイト参照のこと)

これをオンにすることで、画像が劣化しなくなる。ただしファイルサイズが巨大になる。

補足その4 View.ShowTextBoundariesの追加

https://docs.microsoft.com/ja-jp/office/vba/api/word.view.showtextboundaries
Word 97からある機能 印刷レイアウトで以下のようにGridを消しても文字の入力範囲が枠で示される。
https://jeffpar.github.io/kbarchive/kb/187/Q187889/
ただし印刷はされないので紛らわしいのでFalseにしていますが、Trueにする場合には
これは配置ガイドの前の
.View.ShowTextBoundaries = FalseをTrueにしてください。
image.png
個人的にはGridを外したら何も見えないほうが印刷イメージがつかめるのでFalseにしています。

ActiveWindow.Viewは重要な設定が多い

これに限らずActiveWindow.Viewには重要な設定があります。
SelectAll 編集記号の表示
SeekViewは https://docs.microsoft.com/ja-jp/office/vba/api/word.wdseekview の定数です。フッターやヘッダーの部分をダブルクリックしてヘッダーやフッターを編集可能状態にする命令です。wdSeekMainDocumentはメイン文書です。

With wWin.View
.ShowAll = True '編集記号の表示
.ShowTextBoundaries = False 'Trueだと補足のようになる
.ShowObjectAnchors = True 'アンカーを設定した場合アンカーを表示
.ShowHighlight = True '蛍光ペンを表示
.ShowDrawings = True  '描画ツールを使用して作成したオブジェクトを印刷レイアウト表示で表示
.SeekView = wdSeekMainDocument
'.SeekView = wdSeekCurrentPageFooter
'.SeekView = wdSeekCurrentPageHeader
'.SeekView = wdSeekEndnotes '脚注を表示
End With

ここの部分ですね。またSeekViewは排他的に設定されます。コメントアウトしておかないと脚注にとんでいきます。

補足その5 印刷レイアウトの強制設定 横書き設定の明示(コードはコメントアウト)

今回の編集記号設定等はすべて印刷レイアウトで有効なものが多いです。
このため、印刷レイアウトを最初強制することにしました。(20191206以降)

'印刷レイアウト強制
If wWin.View.SplitSpecial = wdPaneNone Then
   wWin.ActivePane.View.Type = wdPrintView
Else
   wWin.View.Type = wdPrintView
End If
ThisDocument.KerningByAlgorithm = False
'横書きを強制する場合はコメントアウトする
'wDoc.Select
'Selection.Orientation = wdTextOrientationHorizontal '横書き 0 縦書き Const wdTextOrientationVerticalFarEast = 1

横書きはwDocSelectで全部選択して横書きを競ってします。縦書きは日本語の場合 wdTextOrientationVerticalFarEast にします。
https://we-vba.info/word_vba/page1/
なおこの命令は縦横混在させて文書を作成している場合、途中で実行すると設定が崩れます。このため、コメントアウトしています。
縦書きの場合に、有効にして設定値を変更して下さい。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3