已知:VB调用WORD的实例,下面的代码拷贝到VB6中就可以用
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Option Explicit
      
   Private Declare Function ShellExecute Lib "shell32.dll" _
                           Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation _
                           As String, ByVal lpFile As String, ByVal lpParameters As String, _
                           ByVal lpDirectory As String, ByVal nShowCmd As Long) As LongPrivate Sub ctlIcon1_GotFocus(Index As Integer)
 Open "城建档案管理系统数据库结构.doc" For Binary As #1
               Close #1
               ShellExecute Me.hwnd, "Open", "城建档案管理系统数据库结构.doc", "", App.Path, 1
End Sub
+++++++++++++++++++++++++++++++++++++++++++++++++++++问题:我在VB中如何向预先定义好的WORD模板传递参数呢?比如:
    预先定义好WORD模板里面定义有一个变量X,
    
那么我该如何将VB中的某一个数值100赋值到WORD中的X中去呢谢谢解答,谢谢!

解决方案 »

  1.   

    Shell是不行的,必须使用Word对象,用VBA来操作才行的
      

  2.   

    楼上正解。
    你可以利用WORD APPLICATION 对象,将摸板中的X直接替换为100,保存即可
      

  3.   

    northwolves(狼行天下),能不能帮小弟发个实例看看啊,谢谢了
      

  4.   

    我給你段類似的源代碼
    Private Sub Command0_Click()
        Title = InputBox(vbCrLf & vbCrLf & "請輸入表格標題:", "表格標題", "XX公司產品報價單")
        If Title = "" Then Title = "XX公司產品報價單"
        Set cnn = New ADODB.Connection
        Set cnn = CurrentProject.Connection
     
        Set rs = New ADODB.Recordset
        rs.CursorType = adOpenKeyset
        rs.LockType = adLockOptimistic
        SQL = "select 產品名稱,單位數量,單價,庫存量 from 產品 where 單價>10.00"
     
        rs.Open SQL, cnn
       
        total_fields = rs.Fields.Count
        total_records = rs.RecordCount
         
      
        Set mywdapp = CreateObject("word.application")
      
        mywdapp.WindowState = wdWindowStateNormal
       
        mywdapp.Documents.Add
       
        mywdapp.ActiveWindow.View.Type = wdPrintView
     
        mywdapp.Visible = True
        mywdapp.Activate
        
        mywdapp.ActiveDocument.Range.Font.Size = "9"
     
       
        For I = 0 To total_fields - 2
            mywdapp.Selection.TypeText Text:=rs.Fields(I).Name & vbTab
        Next I
       
        mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Name & vbCrLf
      
        Do While Not rs.EOF
            For I = 0 To total_fields - 2
            tmpstr = rs.Fields(I).Value
            If rs.Fields(I).Name = "單價" Then
                tmpstr = Format(tmpstr, "####.00")
            End If
            mywdapp.Selection.TypeText Text:=tmpstr & vbTab
            Next I
          
            mywdapp.Selection.TypeText Text:=rs.Fields(total_fields - 1).Value & vbCrLf
            rs.MoveNext
        Loop
     
       
        rs.Close
        Set rs = Nothing
     
       
        mywdapp.ActiveWindow.View.Type = wdNormalView
        mywdapp.Selection.EndKey Unit:=wdStory
        mywdapp.Selection.Delete Unit:=wdCharacter, Count:=1
        mywdapp.Selection.WholeStory
        mywdapp.Selection.ConvertToTable Separator:=wdSeparateByTabs, DefaultTableBehavior:=wdWord8TableBehavior
        mywdapp.Selection.HomeKey Unit:=wdStory
        Set Temp_Table = mywdapp.ActiveDocument.Tables(1)
        Temp_Table.Rows.Alignment = wdAlignRowCenter
        Temp_Table.AutoFitBehavior wdAutoFitContent
        Temp_Table.Rows(1).Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
        Temp_Table.Rows(1).Range.Rows.HeadingFormat = wdToggle
        Temp_Table.Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
        Temp_Table.Borders(wdBorderLeft).LineWidth = wdLineWidth150pt
        Temp_Table.Borders(wdBorderRight).LineStyle = wdLineStyleSingle
        Temp_Table.Borders(wdBorderRight).LineWidth = wdLineWidth150pt
         Temp_Table.Borders(wdBorderTop).LineStyle = wdLineStyleSingle
        Temp_Table.Borders(wdBorderTop).LineWidth = wdLineWidth150pt
         Temp_Table.Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
        Temp_Table.Borders(wdBorderBottom).LineWidth = wdLineWidth150pt
        Temp_Table.Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
        mywdapp.Selection.HomeKey Unit:=wdStory
        mywdapp.Selection.SplitTable
        mywdapp.Selection.Font.Name = "黑体"
        mywdapp.Selection.TypeText Text:=Title & vbCrLf
        mywdapp.Application.ScreenRefresh '刷屏
        mywdapp.Visible = False
        Msg = "數據提取完畢" & vbCrLf & vbCrLf
        Msg = Msg & "總記錄數=" & total_records & ""
        MsgBox Msg, vbOKOnly, "數據提取完畢"
        mywdapp.Visible = True
        mywdapp.ActivateEnd Sub
    你建個表就可以了,窗體隻有一個按鈕,事件的代碼如上
      

  5.   

    再次感谢raulvim() ,我没有建表,简化了一下代码,这样是就把数值传递到WORD中去   Set   mywdapp = CreateObject("word.application")
    mywdapp.WindowState = wdWindowStateNormal
             mywdapp.Documents.Add
             mywdapp.ActiveWindow.View.Type = wdPrintView
             mywdapp.Visible = True
             mywdapp.Activate
             mywdapp.ActiveDocument.Range.Font.Size = "12"
             mywdapp.Selection.TypeText Text:="我爱你滚滚长江水"
             mywdapp.ActiveWindow.View.Type = wdNormalView
             mywdapp.Selection.EndKey Unit:=wdStory
             mywdapp.Visible = False
             mywdapp.Visible = True
             mywdapp.Activate那么我怎么把"我爱你滚滚长江水"这个值传递给事先在WORD中指定的某个字符???
    比如WORD中有个字符为:$1,现在怎么将WORD中的$1替换为"我爱你滚滚长江水",谢谢:)