2014-01-13 53 views
0

是否可以讓Microsoft Word 2010自動更新通過使用Microsoft Query打開文件時插入到文檔中的SQL數據?在Microsoft Word文檔中自動更新SQL查詢結果

在Word中使用插入數據庫功能時,配置數據源並創建SQL查詢後,數據將作爲表格插入到當前打開的文檔中。在插入數據之前,您可以選擇是否將數據粘貼爲FIELD。

如果選擇了字段,數據會出現在字段中(例如,當您插入日期/時間時),右鍵單擊字段並在上下文菜單中選擇「更新字段」,數據應自動更新。這不起作用,因爲Word會再次提示輸入數據源,因此無法實現基於SQL查詢而不需要用戶交互的報表。

VBA是否是實現零用戶交互的唯一方法?(是否需要通過vba創建表格並填寫單元的手動操作)?

回答

0

謝謝大家的意見。我結束了寫這個VBA:

Private Sub Document_Open() 
'wipe the document 
Selection.WholeStory 
Selection.Delete 

'prepare drivers 
Dim cn As New ADODB.connection 
Dim rs As New ADODB.recordset 

'setup document header 
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Text = "CRONUS AB - All employees report" 
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range.Style = "Title" 

'prepare header for table 
Selection.TypeText "First name" & vbTab & "Last name" & vbTab & "Job title" & vbCrLf 

'create connection and execute SQL query 
cn.Open "DRIVER={SQL Server};SERVER=localhost;" & _ 
     "trusted_connection=yes;DATABASE=Demo Database NAV (5-0)" 
rs.Open "SELECT * FROM [CRONUS Sverige AB$Employee]", cn 

'iterate through recordset and print out results to the document 
Do While Not rs.EOF 
    Firstname = rs![First Name] 
    Lastname = rs![Last Name] 
    Jobtitle = rs![Job Title] 

    Selection.TypeText Firstname & vbTab 
    Selection.TypeText Lastname & vbTab 
    Selection.TypeText Jobtitle & vbCrLf 

    rs.MoveNext 
Loop 

'convert text to table and apply table style 
ActiveDocument.Range.ConvertToTable Separator:=wdSeparateByTabs 
ActiveDocument.Tables(1).Style = "Light Shading" 

End Sub 
0

您可以使用各種手段實現這一結果:

  • 包括在Word Excel表格。
  • 如上所述使用VBA或VSTO。已經有各種文章描述過如何添加代碼。
  • Invantive Composition的一個(免費)版本作爲Word的插件(但我在那裏工作)。
  • 甚至可能使用magic語句自動填充RTF的Samba共享上生成RTF。對不起,這真的是這樣的!見Samba book

選擇的選項取決於一些變數我能想到的:

  • 鋪開客戶有多少電腦?
  • 已填寫文件的頁面大小,例如1頁或1.500?
  • 受控環境或個人電腦在世界上的其他地方使用網頁前端?
  • 要設置的文檔模板的數量?
  • 支持32位或64位的Word?
  • 數據庫驅動程序是否可用於所有PC?
  • 是否所有用戶都可以訪問數據庫(憑證)?
  • SQL更改的結果有多頻繁?

當您提供一些更多的背景或文檔應該是什麼樣子的例子時,我可以進一步固定選項?