Samenvatting
Met Automatisering kunt u programmatisch bijna alles doen wat de gebruiker handmatig kan doen in Microsoft Office Word. Als u echter veel tekst hebt die u wilt invoeren en opmaken, is er mogelijk veel code nodig. Als u de gegevens kunt vertegenwoordigen als een RTF-tekenreeks (Rich Text Format), kunt u de automatiseringscode vaak verminderen. U kunt een RTF-tekenreeks maken, de RTF-tekenreeks naar het klembord kopiëren en vervolgens de RTF-tekenreeks in het document plakken.
In dit artikel wordt beschreven hoe u een eenvoudig Visual Basic-voorbeeld maakt dat Word start, een nieuw document maakt en een aantal opgemaakte tekst aan het document toevoegt met behulp van een vooraf ontworpen RTF-tekenreeks.
Meer informatie
Als u het voorbeeldproject wilt maken, volgt u de volgende stappen:
-
Begin Visual Basic en maak vervolgens een nieuwe Standaard EXE. Standaard wordt een formulier met de naam Formulier1 gemaakt.
-
Voeg een CommandButton toe aan het formulier, dubbelklik op de CommandButton en voeg vervolgens de volgende code toe aan de gebeurtenis Klik.
'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 -
Voeg de volgende code toe aan de sectie Algemene declaraties van de formuliermodule.
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 -
Druk op F5 om het project uit te voeren. Word wordt gestart en er wordt een nieuw document gemaakt dat opgemaakte tekst bevat.
Verwijzingen
Ga naar de volgende Microsoft-websites voor meer informatie Office voorbeelden voor het ontwikkelen van Office oplossingen:
http://support.microsoft.com/ofd http://msdn.microsoft.com/office