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