一个基于域和变量来实现WORD中动态创建表格的想法,但遇到困难 =============================== 在WORD中动态创建表格的方法,比较常见的是直接定位到要插入的地方(一般用书签定位),然后selection.tables.add...然后cells(1,1).text="aaa"..... 但是这种解决方法有一个很大的问题,就是不能够避免重复插入的问题(就是这个地方已经插了一个表格了,如果再执行一次,就会有两个表格了。)我曾经试图使用检查有没有插入过表格,有就不插,没有就重新插的方法来解决,但是代码不稳定,有的时候成功,有的时候不成功。 而我研究发现,其实我们在WORD中引用EXCEL的时候,其实也是加了一个: LINK Excel.Sheet.8 "Book1.xls" "Sheet1!R1C1:R3C3" \a \h 的方法。所以我想到一个新的方法,就是定义一个文档变量Variables,然后在指定的位置加个域,只要设置一下变量的值,然后document.fields.update就可以实现动态插入一个表格或者更新这个表格。那么问题来了,我发现无论我怎样传值,都没有办法让这个域显示出来的时候,象一个表格。 我的附件显示了我的两个尝试,希望有对WORD域有了解的大侠帮助解答。谢谢 请解压附件后打开DOC1.DOC。然后点击两个按钮来查看我的代码运行效果。谢谢 --------- '思路1,先在WORD中随便引用一个EXCEL,然后拷贝这个引用域的值到我新插入的域中去,看看能不能成功 Private Sub CommandButton1_Click() '获得引用域的内容 Dim f As Field Dim qq As String For Each f In ThisDocument.Fields Debug.Print f.Code If InStr(1, f.Code, "LINK") > 0 Then qq = f.Result.Text End If Next f Debug.Print qq
'把这个内容,插入到一个新的DOCVARIABLE域中,结果看不到表格!! Dim varName As String, varValue As String Dim a, t varName = "t1" varValue = qq 'varValue = "<table><tr><td>1</td></tr></table>" '加变量 Set a = ThisDocument.Variables(varName) If a Is Nothing Then Set a = ThisDocument.Variables.Add(Name:=varName, Value:=varValue) Else a.Value = varValue End If '回到表头 Application.Selection.HomeKey Unit:=wdStory '在WORD中插入引用这个变量的域 Set t = Application.Selection.Fields.Add(Application.Selection.Range, wdFieldEmpty, "DOCVARIABLE " & varName, True) Set t = Nothing Set a = Nothing End Sub
''这个换了一个思路,直接把值做成HTML,看看行不行,还是不行 Private Sub CommandButton2_Click() Dim f As Field '回到表头 Application.Selection.HomeKey Unit:=wdStory Dim varName As String, varValue As String Dim a varName = "t2" varValue = "<table><tr><td>1</td></tr></table>" Set a = ThisDocument.Variables(varName) If a Is Nothing Then Set a = ThisDocument.Variables.Add(Name:=varName, Value:=varValue) Else a.Value = varValue End If '在WORD中插入引用这个变量的域 Set t = Application.Selection.Fields.Add(Application.Selection.Range, wdFieldEmpty, "DOCVARIABLE " & varName, True) Set a = Nothing End Sub
ykqJqNkC.zip
(14.24 KB, 下载次数: 45)
[此贴子已经被作者于2007-4-4 3:09:51编辑过] |