Povzetek
Z avtomatizacijo lahko programsko naredite skoraj vse, kar lahko uporabnik naredi ročno v Microsoft Office Wordu. Če pa želite vnesti veliko besedila in ga oblikovati, boste morda potrebovali veliko kode. Če lahko podatke predstavljate kot niz obogatenega besedila (RTF), lahko pogosto zmanjšate kodo avtomatizacije. Ustvarite lahko niz RTF, kopirate niz RTF v odložišče in nato prilepite niz RTF v dokument.
V tem članku je opisano, kako ustvarite preprost Visual Basic primer, ki zažene Word, ustvari nov dokument in v dokument doda nekaj oblikovanega besedila z vnaprej vgrajenim nizom RTF.
Več informacij
Če želite ustvariti vzorčni projekt, sledite tem korakom:
-
Zaženite Visual Basic in nato ustvarite nov standardni EXE. Privzeto je ustvarjen obrazec z imenom Obrazec1.
-
V obrazec dodajte CommandButton, dvokliknite CommandButton in v dogodek Click dodajte to kodo.
'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 -
V odsek »Splošne deklaracije« v modulu »Obrazec« dodajte to kodo.
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 -
Pritisnite tipko F5, da zaženete projekt. Word se zažene, nato pa je ustvarjen nov dokument, ki vsebuje oblikovano besedilo.
Reference
Če želite več informacij in vzorce za razvoj Office rešitev, obiščite ta Microsoftova spletna mesta:
http://support.microsoft.com/ofd http://msdn.microsoft.com/office