Board logo

標題: excel開啟word填入相關資料 [打印本頁]

作者: y663258    時間: 2014-10-8 10:53     標題: excel開啟word填入相關資料

請各位先進幫忙用vba用excel開啟word填入相關資料可以做到嗎
?請參考excel附件說明謝謝。
作者: luhpro    時間: 2014-10-8 22:25

回復 1# y663258
你的例子就我所知,
一般都是用 Word 的合併列印功能來達成的喔,
[attach]19314[/attach]
使用該功能直接就可以產生套用了每一個人資料的 "成果報告" 畫面,
存檔後若要列印個別人的資料時只要指定印哪一頁就好.
[attach]19315[/attach]
作者: y663258    時間: 2014-10-9 09:03

回復 2# luhpro


    謝謝iuhprohu先進指導,這一個好方法,只是名單有幾百筆,我要的只是找出一筆在"成果報告.doc"第一頁填入相關基本資料,續頁需是空白頁要撰寫相關報告。
       iuhprohu先進可否如附件需求給予協助謝謝您。
作者: GBKEE    時間: 2014-10-9 16:47

本帖最後由 GBKEE 於 2014-10-10 05:34 編輯

回復 3# y663258

   
我要的只是找出一筆在"成果報告.doc"第一頁填入相關基本資料

試試看
你 1# 附檔 表單的程式碼  尋找:身份證字號
  1. Dim Rng As Range
  2. Private Sub TextBox1_Change()
  3.     If Trim(TextBox1) <> "" Then  '去除兩旁空白字元後的TextBox1
  4.         Set Rng = Sheets("SHEET1").Range("a:a").Find(Trim(TextBox1), LOOKAT:=xlWhole)
  5.                                 ' .Range("a:a") 尋找:身份證字號
  6.         If Not Rng Is Nothing Then
  7.             If MsgBox(TextBox1 & vbLf & "印列?", vbYesNo, "成果報 告") = vbYes Then Ex
  8.         End If
  9.     End If
  10. End Sub

  11. Private Sub Ex()
  12.     Dim AR, i As Integer
  13.     AR = Array("成果報 告", "H", "B", "D", "A", "I", "J", "K")
  14.        '表頭各欄位項目字串間隔請自行調整與顯示在 "成果報 告.DOC,的字串間隔一致
  15.     For i = 1 To UBound(AR)
  16.         AR(i) = Cells(1, AR(i)) & " : " & Rng.Cells(1, AR(i))
  17.         '導入 每欄位的表頭&":"&字串(內容)
  18.     Next
  19.     With CreateObject("WORD.APPLICATION")
  20.         .Visible = True
  21.         .Documents.Open "d:\成果報 告.doc"
  22.         With .ActiveDocument
  23.             .Range(.Range.Start, .Range.End).Text = Join(AR, vbLf)
  24.             With .Range
  25.                 .Font.Size = 16
  26.                 .ParagraphFormat.Alignment = 0    'wdAlignParagraphLeft     '靠左
  27.                 With .Paragraphs(1).Range
  28.                     .Font.Size = 24
  29.                     .ParagraphFormat.Alignment = 1 ' wdAlignParagraphCenter '至中
  30.                 End With
  31.             End With
  32.             .PrintOut    '印列
  33.             .Close
  34.         End With
  35.         .Quit
  36.    End With
  37. End Sub
複製代碼

作者: y663258    時間: 2014-10-15 09:32

回復 4# GBKEE


    感謝GBKEE版主大力協助您的程式可以如小第所需運作,今想請版主再次協助更改開啟Documents.Open "d:\成果報 告.doc"原本只有一頁若改成二頁,  目前程式只能顯示第一頁(作用頁)因自己才疏學淺,找尋相關資料試了很久還是失敗,請版主再給予協助謝謝。
Dim Rng As Range
Private Sub TextBox1_Change()
    If Trim(TextBox1) <> "" Then  '去除兩旁空白字元後的TextBox1
        Set Rng = Sheets("SHEET1").Range("a:a").Find(Trim(TextBox1), LOOKAT:=xlWhole)
                                ' .Range("a:a") 尋找:身份證字號
        If Not Rng Is Nothing Then
            If MsgBox(TextBox1 & vbLf & "印列?", vbYesNo, "成果報 告") = vbYes Then Ex
        End If
    End If
End Sub

Private Sub Ex()
    Dim AR, i As Integer
    AR = Array("成果報 告", "H", "B", "D", "A", "I", "J", "K")
       '表頭各欄位項目字串間隔請自行調整與顯示在 "成果報 告.DOC,的字串間隔一致
    For i = 1 To UBound(AR)
        AR(i) = Cells(1, AR(i)) & " : " & Rng.Cells(1, AR(i))
        '導入 每欄位的表頭&":"&字串(內容)
    Next
    With CreateObject("WORD.APPLICATION")
        .Visible = True
        .Documents.Open "d:\成果報 告.doc"原檔案只有一頁現改有二頁,要這二頁能儲存在"d:\成果報 告.doc"
        With .ActiveDocument
            .Range(.Range.Start, .Range.End).Text = Join(AR, vbLf)
            With .Range
                .Font.Size = 16
                .ParagraphFormat.Alignment = 0    'wdAlignParagraphLeft     '靠左
                With .Paragraphs(1).Range
                    .Font.Size = 24
                    .ParagraphFormat.Alignment = 1 ' wdAlignParagraphCenter '至中
                End With
            End With
            .PrintOut    '印列
            .Close
        End With
        .Quit
   End With
End Sub
作者: GBKEE    時間: 2014-10-15 09:43

回復 5# y663258
  "d:\成果報 告.doc"原本只有一頁若改成二頁,  目前程式只能顯示第一頁(作用頁)因自己才疏學淺,找尋相關資料試了很久還是失敗

有一頁若改成二頁,不了解你的意思,是修改後的存檔嗎??
  1. End With
  2. .PrintOut '印列
  3. .Close True '存檔參數=True ,不存檔參數=False(預設的參數)
複製代碼

作者: y663258    時間: 2014-10-15 10:21

回復 6# GBKEE


.Documents.Open "d:\成果報 告.doc"原檔案只有一頁現改成有二頁,要這二頁能儲存在"d:\成果報 告.doc"
        With .ActiveDocument
    開 啟d:\成果報 告.doc若改成有二頁,經 With .ActiveDocument後只剩第一頁,可以將二頁都保存嗎?可能是第二頁沒有作用的原故所以不見了。
作者: GBKEE    時間: 2014-10-15 10:58

回復 7# y663258

試試看
  1. Private Sub Ex()
  2.     Dim AR, i As Integer
  3.     AR = Array("成果報 告", "H", "B", "D", "A", "I", "J", "K")
  4.        '表頭各欄位項目字串間隔請自行調整與顯示在 "成果報 告.DOC,的字串間隔一致   
  5.     For i = 1 To UBound(AR)
  6.         AR(i) = Cells(1, AR(i)) & " : " & Rng.Cells(1, AR(i))
  7.         '導入 每欄位的表頭&":"&字串(內容)
  8.     Next
  9.     With CreateObject("WORD.APPLICATION")
  10.         .Visible = True
  11.         .Documents.Open "d:\成果報 告.doc"
  12.         With .ActiveDocument
  13.             For i = 0 To UBound(AR)
  14.                 If i + 1 > .Paragraphs.Count Then .Paragraphs.Add
  15.                 With .Paragraphs(i + 1).Range
  16.                     .Text = AR(i) & vbLf
  17.                     .Font.Size = IIf(i = 0, 24, 16)
  18.                     .ParagraphFormat.Alignment = IIf(i = 0, 1, 0)
  19.                 End With               
  20.             Next
  21.             .PrintOut    '印列
  22.         .Close True  '存檔
  23.         End With
  24.         .Quit
  25.    End With
  26. End Sub
複製代碼

作者: y663258    時間: 2014-10-15 17:17

謝謝GBKEE版主大力協助,經您再次修改程式己符合小第需求。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)