Ms access 用MS Access表中的数据填充MS Word表

Ms access 用MS Access表中的数据填充MS Word表,ms-access,ms-word,vba,Ms Access,Ms Word,Vba,我尝试将access表中的数据填充到word表中 在开始的时候,我在word模板中有一个空表,其中有1行2列,当它在代码中运行时,我最终得到了一个有8行2列的表,这很好。还有一个,我在access表中有数据集,但好的 但是表中的所有字段都是空的,为什么不在单元格中填充: .Tables(2).Cell(row, col).Range.Text = rs!short 以下是循环: Set rs = DB.OpenRecordset("tbl_abbreviations", dbOpenD

我尝试将access表中的数据填充到word表中

在开始的时候,我在word模板中有一个空表,其中有1行2列,当它在代码中运行时,我最终得到了一个有8行2列的表,这很好。还有一个,我在access表中有数据集,但好的

但是表中的所有字段都是空的,为什么不在单元格中填充:

.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文档中的“目标”范围位置(通常是书签),然后将该范围转换为表格,然后再进行格式化

分隔字符串格式的示例数据内容:

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(";")
将代码替换为读取访问表并将其写入sData。您可以使用任何需要的字段分隔符,它不必是分号。但记录分隔符必须是vbCr(ANSI 13)。确保指定可转换函数中使用的字段分隔符


拥有
tbl
对象后,可以使用它应用格式化。这比使用
Tables(index)
收集方法重复使用表更可靠、更高效。

有点胡乱猜测,但是
Short
是一个保留字,所以请尝试
rs![简短]
。除此之外,如果您确信
.Tables(2)
是正确的,那么您的代码应该可以工作。是的,我确信这个表是正确的。我可以改变背景颜色,行数。它只是不显示文本,即使我试着写一个简单的字符串,比如“hello”。我甚至尝试过选择,但没有成功。我的想法是我忘了导入一个库。但word 16.0库处于活动状态