2016-02-28 161 views
-1

我嘗試將我的訪問表中的數據填入詞表中。使用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) 

我忘了激活什麼嗎?

+0

狂放猜測的排序,但'Short'是一個保留字,所以試試'rs![short]'。除此之外,如果您確定'.Tables(2)'是正確的,那麼您的代碼應該可以工作。 – Andre

+0

是的,我相信桌子。我可以改變背景顏色,行數。它只是不顯示文本,即使我試圖寫一個簡單的字符串,如「你好」。我嘗試過,即使選擇,但沒有奏效。我的想法是,我忘記導入一個圖書館。但字16.0庫是活動的 –

回答

1

在我看來,你的方法並不是最優的。寫入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)收集方法重複使用表更加可靠和高效。