以下代码供参考:
'* +++++++++++++++++++++++++++++
'* Created By I Love You_Word!@ExcelHome 2005-4-29 5:02:34
'仅测试于System: Windows NT Word: 10.0 Language: 2052
'^The Code CopyIn [ThisDocument-ThisDocument]^'
'* -----------------------------
Option Explicit
Dim ExlSh As Object
Sub Example()
Dim MyValue As Integer, MyCaseRange As Variant, SheetValue As String
On Error Resume Next '忽略错误
MyValue = VBA.Val(Me.FormFields(1).Result) '取得文字型窗体域1中的值
With ExlSh
'取得数据所在工作表的有效区域
Set MyCaseRange = .sheets(1).Range("A1:" & .sheets(1).[B65536].End(-4162).Address)
'使用VLOOKUP函数返回值
SheetValue = .Application.WorksheetFunction.VLookup(MyValue, MyCaseRange, 2, False)
If Err.Number <> 0 Then '错误时提示
MsgBox "EXCEL工作表中未找到该数据,请检查录入是否有误!", vbExclamation, "Warning"
Err.Clear '清除错误
Else
If Me.ProtectionType <> wdNoProtection Then
Me.Unprotect '解除保护
Me.FormFields(2).Result = SheetValue '设置文字型窗体域2的值
Me.Protect wdAllowOnlyFormFields, True, "" '保护窗体
' Else
' Me.FormFields(2).Result = SheetValue
End If
End If
End With
End Sub
'----------------------
Private Sub Document_Close()
On Error Resume Next
Set ExlSh = Nothing '释放对象变量
End Sub
'----------------------
Private Sub Document_Open()
On Error Resume Next '创建一个后期绑定的EXCEL工作薄对象
Set ExlSh = CreateObject(ThisDocument.Path & "\Book1.xls")
End Sub
'----------------------
注意:此WORD文档应处于保护状态;在文字型窗体域1中输入数据后用方向键或者鼠标或者TAB,将光标移出该窗体域(移向第二个窗体域),则会自动更新。
请注意在解除文档保护后查看窗体域1的属性,其中为退出时运行EXAMPLE宏;
请在文档保护(窗体)后方能正确运行(也可以视图/窗体/保护中进行)
示例中没有使用密码。
3e4BeLwl.rar
(8.46 KB, 下载次数: 41)
|