0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Word VBA 最終版にする 互換モードの種類を判定する関数 変更履歴の切り替え

Last updated at Posted at 2018-09-12

最終版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が歴史修正主義、つまり日本をバカにさせているネトウヨの思想にも使われますね。なんかあまりいイメージのプロパティ名とは思えません。覚えやすいのは覚えやすいですけどね。

変更履歴のオン・オフを切り替えるWordマクロ

このコードでもいいのですが
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

0
4
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
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?