概要
Automation を使用すると、Word でユーザーが手動で実行できるほぼすべての操作をプログラムMicrosoft Officeできます。 ただし、多数のテキストを入力して書式設定する場合は、多くのコードが必要になる場合があります。 データをリッチ テキスト形式 (RTF) 文字列として表す場合は、Automation コードを頻繁に減らします。 RTF 文字列を作成し、RTF 文字列をクリップボードにコピーして、RTF 文字列を文書に貼り付けることができます。
この記事では、Word を起動し、新しい文書を作成し、事前に構築された RTF 文字列を使用して書式設定されたテキストを文書に追加する簡単な Visual Basic の例を作成する方法について説明します。
詳細情報
サンプル プロジェクトを作成するには、次の手順に従います。
-
新Visual Basicし、新しい Standard EXE を作成します。 既定では、Form1 という名前のフォームが作成されます。
-
フォームに CommandButton を追加し、CommandButton をダブルクリックして、次のコードを Click イベントに追加します。
'sRTF represents the rich-text-formatted string to paste into Word
Dim sRTF As String
sRTF = "{\rtf1\ansi\ansicpg1252\deff0\deftab720{\fonttbl" & _
"{\f0\fswiss MS Sans Serif;}{\f1\froman\fcharset2 Symbol;}" & _
"{\f2\froman\fprq2 Times New Roman;}}" & _
"{\colortbl\red0\green0\blue0;\red255\green0\blue0;}" & _
"\deflang1033\horzdoc{\*\fchars }{\*\lchars }" & _
"\pard\plain\f2\fs24 Line 1 of \plain\f2\fs24\cf1" & _
"inserted\plain\f2\fs24 file.\par }"
'Copy the contents of the Rich Text to the clipboard
Dim lSuccess As Long
Dim lRTF As Long
Dim hGlobal As Long
Dim lpString As Long
lSuccess = OpenClipboard(Me.hwnd)
lRTF = RegisterClipboardFormat("Rich Text Format")
lSuccess = EmptyClipboard
hGlobal = GlobalAlloc(GMEM_MOVEABLE Or GMEM_DDESHARE, Len(sRTF))
lpString = GlobalLock(hGlobal)
CopyMemory lpString, ByVal sRTF, Len(sRTF)
GlobalUnlock hGlobal
SetClipboardData lRTF, hGlobal
CloseClipboard
GlobalFree hGlobal
'Paste into a new Word document
Dim oWord As Object
Dim oDoc As Object
Set oWord = CreateObject("word.application")
Set oDoc = oWord.Documents.Add
oWord.Selection.Paste
oWord.Visible = True -
Form モジュールの [全般宣言] セクションに次のコードを追加します。
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function RegisterClipboardFormat Lib "user32" Alias _
"RegisterClipboardFormatA" (ByVal lpString As String) As Long
Private Declare Function EmptyClipboard Lib "user32" () As Long
Private Declare Function CloseClipboard Lib "user32" () As Long
Private Declare Function SetClipboardData Lib "user32" ( _
ByVal wFormat As Long, ByVal hMem As Long) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal wFlags As Long, _
ByVal dwBytes As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" ( _
ByVal Destination As Long, Source As Any, ByVal Length As Long)
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalFree Lib "kernel32" Alias "GlobalFree" ( _
ByVal hMem As Long) As Long
Private Const GMEM_DDESHARE = &H2000
Private Const GMEM_MOVEABLE = &H2 -
F5 キーを押してプロジェクトを実行します。 Word が起動し、書式設定されたテキストを含む新しい文書が作成されます。
参照情報
ソリューションの開発に関する詳細とサンプルについては、Officeの Microsoft Web サイトを参照してください。
http://support.microsoft.com/ofdhttp://msdn.microsoft.com/office