最終版Finlalにする 解除する
最終版ってなんというのだろうかと思っていたのですが、Finalでした。
まんまだ。
まあ最終版は簡単に解除できますが、VBAでも解除できます。
Sub WordAcitiveDocumentFinalVersion()
'最終版にする
ActiveDocument.Final = True
'最終版を解除する
ActiveDocument.Final = False
End Sub
Doc*形式を互換モードにする
Document.CompatibilityMode プロパティ (Word)
##注釈(機械翻訳がひどすぎる)
Word の以前のバージョンで作成された Word で文書を開くと、互換モードになっています。互換モードことがなくなります新機能や強化された機能 Word で使用可能なドキュメントを作業中に Word の以前のバージョンを使用してドキュメントを編集するユーザーが編集できるようにするため。
##Remarks(米英語言文)
When you open a document in Word that was created in a previous version of Word, Compatibility Mode is turned on. Compatibility Mode ensures that no new or enhanced features in Word are available while working with a document, so that people who edit the document using previous versions of Word will have full editing capabilities.
##注釈(書き直すとこんな感じ?)
以前のバージョンで作成されたWordで開くときは、互換モード(CompatibilityMode)になっています。互換モードが働いているときには、Wordの新しい機能や拡張された機能が使えません。このため、以前のバージョンを使う場合は、完全な互換モードを使う必要があります。Wordの新機能や拡張された機能を使う場合には互換モードを解除する必要がありますが、以前のバージョンのWordでは編集できなくなります。
Sub isActiveDocumentCompatibilityMode()
Debug.print Application.Version = ActiveDocument.CompatibilityMode
End Sub
##定数
WdCompatibilityMode 列挙 (Word)
名前 | 値 | 説明 |
---|---|---|
wdCurrent | 65535 | 最新バージョンの Word に該当する互換性モードです。 |
wdWord2003 | 11 | Word は、Word 2003 で最も互換性のあるモードに配置されます。このモードでは、Word の新しい機能が無効になります。 |
wdWord2007 | 12 | Word は、Office Word 2007 で最も互換性のあるモードに配置されます。このモードでは無効になって Wordare に新しい機能の場合。 |
wdWord2010 | 14 | Word と最も互換性があるモードに配置されます。このモードでは無効になって Wordare に新しい機能の場合。 |
wdWord2013 | 15 | 既定値。Word のすべての機能が有効になります |
##英語版は微妙にニュアンスが違う
WdCompatibilityMode Enumeration (Word)
https://docs.microsoft.com/en-us/office/vba/api/word.wdcompatibilitymode
名前 | 値 | 説明 |
---|---|---|
wdCurrent | 65535 | Compatibility mode equivalent to the latest version of Word. |
wdWord2003 | 11 | Word is put into a mode that is most compatible with Word 2003. Features new to Word are disabled in this mode. |
wdWord2007 | 12 | Word is put into a mode that is most compatible with Office Word 2007. Features new to Wordare disabled in this mode. |
wdWord2010 | 14 | Word is put into a mode that is most compatible with . Features new to Wordare disabled in this mode. |
wdWord2013 | 15 | Default. All Word features are enabled. |
これは日本語版と同じだがDocs版がある
WdCompatibilityMode Enum
Docs.NET.NET API BrowserMicrosoft.Office.Interop.WordWdCompatibilityMode
Namespace: Microsoft.Office.Interop.Word
Assembly: Microsoft.Office.Interop.Word.dll
Specifies the compatibility mode that Word 2010 uses when opening a document.
名前 | 値 | 説明 |
---|---|---|
wdCurrent | 65535 | Compatibility mode equivalent to the latest version of Word. |
wdWord2003 | 11 | Word 2010 is put into a mode that is most compatible with Word 2003. Features new to Word 2010 are disabled in this mode. |
wdWord2007 | 12 | Word 2010 is put into a mode that is most compatible with Word 2007. Features new to Word 2010 are disabled in this mode. |
wdWord2010 | 14 | All Word 2010 features are enabled. |
wdWord2013 | 15 | Default. All Word 2013 features are enabled. |
WdWord2003n記述はWord2010では最もWord2003と互換性がありますが、Word2010の新しい機能はこのモードではすべて無効になります
ということになっている。
つまりVersionごとに同じ定数を使っても互換性が違う可能性がある。
#よく似た定数
定数は名前wdCompatibilityModeCurrentのような名前はない。
これは互換性を維持して前のバージョンへ保存するときの値。
Namespace: Microsoft.Office.Word.Server.Conversions
Assembly: Microsoft.Office.Word.Server.dll
Specifies the compatibility mode of the output file.
Fields | value | note |
---|---|---|
Current | -1 | Convert the file to the most recent version. |
MaintainCurrentSetting | 0 | Maintain the current compatibility mode setting specified by the file.ファイルの現在の互換性を維持 |
Word2003 | 11 | Convert the file to Word 97 to Word 2003 compatibility mode. |
Word2007 | 12 | Convert the file to Word 2007 compatibility mode. |
Word2010 | 14 | Convert the file to Word 2010 compatibility mode. |
Word2013 | 15 | Convert the file to Microsoft Word 2013 compatibility mode. |
Function fnWordDocumentCompatibilityModeis(lpValue As Long) As String
' 2018/09/12
' Q11Q
' For Word 2010 Later
' ActiveDocument.CompatibilityModeで取得した長整数型(LONG)の値がどのバージョンか、文字列型で返す関数です
Select Case lpValue
Case Is = 65535
fnWordDocumentCompatibilityModeis = "Current Version"
Case Is = 11
fnWordDocumentCompatibilityModeis = "Word 2003"
Case Is = 12
fnWordDocumentCompatibilityModeis = "Word 2007"
Case Is = 14
fnWordDocumentCompatibilityModeis = "Word 2010"
Case Is = 15
fnWordDocumentCompatibilityModeis = "Word 2013"
Case Else
fnWordDocumentCompatibilityModeis = "Error or Unknown"
End Select
End Function
SetCompatibilitymode
Document.SetCompatibilityMode メソッド (Word)
ドキュメントの互換性モードを設定します。
構文
Expression.SetCompatibilityMode(mode)
式ドキュメントオブジェクトを表す変数です。
Modeは上の数字を使う。
読み取り専用と言いながら、互換性を変更することは可能だ。
[文書が互換モードかどうかを判定するWordマクロ 初心者備忘録]
(https://www.ka-net.org/blog/?p=5477)
ここよりもっと解説が詳しいが、サンプルで下の方の
Dim ta: Set ta = CreateObject("TLI.TLIApplication")
これを使っているサンプルは現在は動かないので注意。
##互換モードは2010よりはよくなっていない説を唱える
初心者備忘録より引用 URLは上記と同じ
Word 2010で追加された、DocumentオブジェクトのCompatibilityModeプロパティを使うと、対象となる文書に設定されている、互換モードのバージョンを取得することができます。
この機能は2010より追加されている。推定だが、互換モードはおそらく2010より2013の方が2003の互換性が高いということはない。上記のDocsの記述から2010以上の機能を無効化して互換するためである。
##互換モードは一見同じようで違う
このように互換モードは、表示は同じでも設定は違う場合がある。
変更履歴(TrackRivisions)のオンとオフを切り替える
Toggle TrackRivisions
toggleは切り替えると訳した方がいいみたいですね。Trackが引きずるつまり、履歴。Rivisionが歴史修正主義、つまり日本をバカにさせているネトウヨの思想にも使われますね。なんかあまりいイメージのプロパティ名とは思えません。覚えやすいのは覚えやすいですけどね。
このコードでもいいのですが
VBA マクロ高速化のために停止すべき3項目 t-hom’s diary
このようにProperty Letを標準モジュールで使って切り替える方法があります。これを使ってみます。標準モジュールでもPropetry Letが使えるという例です。
ActiveDocumentとThisDocument
個人的にはThisの方が好きです。ActiveにしたDocumentに見境なくコードが効くのは危ないからです。Debug.Printの行はSampleなので置いていますが、もちろん削除してよいです。
Property Let toggleTrackRivisions(ByVal Flag As Boolean)のようにもかけて、Reliefさんと同じ1行で書けます。ちょっと好みでThisにしました。
Option Explicit
''' これは標準モジュール用のコードです '''
''' 2018/09/12 By Q11Q
''' For Word 2007 Later
Sub test()
toggle変更履歴TrackRivisions = False
toggle変更履歴TrackRivisions = True
End Sub
Property Let toggle変更履歴TrackRivisions(ByVal Flag As Boolean)
With ActiveDocument
.TrackRevisions = Flag
Debug.Print .TrackRevisions
End With
End Property
Property Let toggleTrackRivisions(ByVal Flag As Boolean)
ThisDocument.TrackRevisions = Flag : Debug.Print ThisDocument.TrackRevisions
End Property