スティーブは、ドキュメントのファイル名をヘッダーと、ドキュメントの1ページ目と2ページ目の正式なキャプションに記載する必要があるドキュメントを作成します。彼は、ファイル名を見出しに入力した後、それをコピーして、キャプションのテキストフォームフィールドの適切な場所に貼り付けるマクロを作成しました。彼の次のドキュメントアセンブリステップは、「名前を付けて保存」コマンドを使用してドキュメントを保存することです。ドキュメントは、ヘッダーとキャプションに入力されたものと同じファイル名を使用して保存されます。

これを手動で行う場合、Steveは[名前を付けて保存]ダイアログボックスを表示し、ファイル名を貼り付けて、[保存]をクリックします。彼は、この「名前を付けて保存」ステップを追加するマクロコードを作成しようとしましたが、その方法を理解できません。 Wordが手動の手順を記録すると、Steveは次のようなものを取得します。

ActiveDocument.SaveAs FileName:="04562.sw.docx

これは、Wordが手動の手順を実行するときに使用されている特定のファイル名を記録していることを示していますが、Steveは、ドキュメントのヘッダーの内容に基づいて、別のファイル名を使用したいと考えています。その情報(ファイル名)は、マクロの実行時にクリップボードにあるため、クリップボードから情報を取得することもできますが、Steveはその方法についても迷っています。

スティーブはすでにファイル名をコピーするマクロを持っており、そのマクロに満足しているので、適切な名前を使用してファイルを保存するには、コードに2、3の変更を加えるだけで済みます。次のコードを既存のマクロの適切な場所に追加してみてください。

Dim strTemp As String Dim MyData As DataObject Set MyData = New DataObject

MyData.GetFromClipboard strTemp = MyData.GetText(1)

ActiveDocument.SaveAs FileName:=Trim(strTemp) & ".docx"

ファイル名に使用するテキスト文字列がクリップボードにある限り、このコードは機能するはずです。クリップボードの文字列の末尾に.Doc拡張子を追加することもできます。このコードでは、VBAエディターでMicrosoftフォームの参照を設定する必要があります。

(エディターの[ツール]メニューから[参照]を選択します。)

もちろん、このマクロへのアプローチを再考することをお勧めします。実際、まったく別のアプローチをとれば、ほとんどのコードを取り除くことができるかもしれません。たとえば、最初にドキュメントを保存してから、フィールドを使用してドキュメント自体のファイル名を参照するように指示することができます。 (FILENAMEフィールドはこの目的に使用できます。)

マクロを使用してファイル名をドキュメントの1ページ目と2ページ目にコピーする代わりに、定義済みのスタイル(DocTitleやDocNameなど)を使用してファイル名を参照し、STYLEREFフィールドを他の場所で使用することもできます。その名前を参照するためのドキュメント。そうすれば、一度入力するだけで、マクロは必要ありません。 Word MVPのサイトのこのページで、ドキュメントのさまざまな領域でデータを繰り返す複数の方法を見つけることができます。

http://gregmaxey.mvps.org/Repeating_Data.htm

また、ユーザーフォームを作成してユーザーからデータを収集し(目的のファイル名を取得するため)、その名前でドキュメントを保存することもできます。

次に、マクロはファイル名をTITLEフィールドに割り当てることができ、TITLEフィールドを参照するドキュメント内の任意の場所に、ユーザーが入力したファイル名が自動的に表示されます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(10809)は、Microsoft Word 2007、2010、2013、および2016に適用されます。Wordの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります。