使用MS Access表中的数据填充MS Word表格
问题描述:
我尝试将我的访问表中的数据填入词表中。使用MS Access表中的数据填充MS Word表格
一开始我在单词模板中有一行和两列的空表,当它运行代码时,我终于有了一个有8行和2列的表,这很好。还有一则我的数据集的访问表,但确定...
但表中的所有字段都为空,为什么不带馅的细胞:
.Tables(2).Cell(row, col).Range.Text = rs!short
这里是循环:
Set rs = DB.OpenRecordset("tbl_abbreviations", dbOpenDynaset, dbSeeChanges)
rs.MoveFirst
col = 1
row = 1
Do While Not rs.EOF
.Tables(2).Cell(row, col).Range.Text = rs!short
col = col + 1
.Tables(2).Cell(row, col).Range.Text = rs!Description
.Tables(2).Rows.Add
col = 1
row = row + 1
rs.MoveNext
Loop
甚至有点奇特的是,这将工作:
.Shading.BackgroundPatternColorIndex = wdBlue
但这不起作用:
.Shading.BackgroundPatternColorIndex = RGB(104, 212, 248)
我忘了激活什么吗?
答
在我看来,你的方法并不是最优的。写入Word表格,逐个单元格效率不高。
更好的办法是将数据写入分隔字符串格式,将该字符串分配给Word文档中的“目标”范围位置(通常为书签),然后将范围转换为表格,然后可以格式化。在分隔字符串格式
样本数据内容:
Short;Description
s1;the first record
s2;the second record
s3;and so on...
的代码段用于写入书签并转换为表:
Dim sData As String
Dim rng As word.Range
Dim tbl As word.Table
sData = "Short;Description" & vbCr & "s1;the first record" & vbCr _
& "s2;the second record" & vbCr & "s3;and so on..."
Set rng = ActiveDocument.Bookmarks("test").Range
rng.Text = sData
Set tbl = rng.ConvertToTable(";")
替换你的代码读取Access表,写它到sData。您可以使用任何您想要的字段分隔符,它不必是分号。但记录分隔符必须是vbCr(ANSI 13)。请务必指定您在ConvertToTable函数中使用的字段分隔符。
一旦你有tbl
对象,你可以用它来应用格式。这比使用Tables(index)
收集方法重复使用表更加可靠和高效。
狂放猜测的排序,但'Short'是一个保留字,所以试试'rs![short]'。除此之外,如果您确定'.Tables(2)'是正确的,那么您的代码应该可以工作。 – Andre
是的,我相信桌子。我可以改变背景颜色,行数。它只是不显示文本,即使我试图写一个简单的字符串,如“你好”。我尝试过,即使选择,但没有奏效。我的想法是,我忘记导入一个图书馆。但字16.0库是活动的 –