【发布时间】:2016-02-27 15:45:16
【问题描述】:
我在一个word文档中有24个文本框如下图所示:
我正在尝试使用工作表中以下范围内每个单元格的内容进行填充,如下所示:
一次三行:因为有 24 个文本框,所以 3 行 8 列每次将有 24 个单元格:
然后我会用一个唯一的名称保存它并从接下来的 3 行中新建:
代码:
Option Explicit
Sub TransferData()
Dim FRow As Long, i As Long, j As Long
Dim wk As Worksheet, wt As Worksheet
Dim Path As String, Folder As String, File As String, CandName As String
Set wt = Sheet2 'Temp
Set wk = Sheet1 'Main
FRow = wk.Range("D" & Rows.Count).End(xlUp).Row
wt.Cells.Clear
wk.Range("D6:K" & FRow).Copy
wt.Activate
wt.Range("A1").Select
wt.Paste
Application.CutCopyMode = False
wt.Columns.AutoFit
FRow = wt.Range("A" & Rows.Count).End(xlUp).Row
wt.Range("$A$1:$H$" & FRow).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8), Header:=xlYes
'----------Deduping is Done Now Transferring Data from eXcel to Word---------------
Path = Trim(wk.Range("A6").Text)
Folder = Trim(wk.Range("A10").Text)
File = Trim(wk.Range("A14").Text)
Dim Rng As Range
Dim r As Long, ct As Long, col As Long
Dim wdApp As Word.Application, wdDoc As Word.Document
On Error Resume Next
Set wdApp = GetObject(, "Word.Application")
If Err.Number <> 0 Then 'Word isn't already running
Set wdApp = CreateObject("Word.Application")
End If
On Error GoTo 0
Set wdDoc = wdApp.Documents.Open(Path & "\" & Folder & "\" & File)
With wt
FRow = .Range("A" & Rows.Count).End(xlUp).Row
Set Rng = .Range("A2:G" & FRow)
End With
With Rng
r = 2
Do
Set wdDoc = wdApp.Documents.Open(Path & "\" & Folder & "\" & File)
CandName = Trim(.Range("A" & r).Text)
col = 0
For i = 1 To 24
If i Mod 9 = 0 Then
r = r + 1
col = 1
Else
col = col + 1
End If
wdDoc.Shapes("Text Box " & i).TextFrame.TextRange.Text = .Cells(r, col).Value
Next i
ActiveDocument.SaveAs Filename:=Path & "\" & Folder & "\" & "New Files\" & "_" & CandName & r
Loop Until .Range("A" & r).Text <> ""
End With
End Sub
我不知道的:
如何重命名word文档中的文本框(手动或代码),以便在宏中使用。
保存 word 文档并使用 24 个文本框创建新的 Word 文档,以便再次填充它们。
【问题讨论】: