VBA for Excel将Word表单数据导入到单独的工作表中

时间:2018-07-26 11:55:14

标签: excel vba excel-vba

我正在尝试创建一个宏,该宏将内容控件中的Word表单数据导入到Excel文件中,但是将数据分为3个单独的工作表。

我需要1页中1到20,另一页中21到26以及另一页27到193的内容控制数据。

到目前为止,我可以将1到20个数据点合并为一张工作表(或所有数据),但是不能指定单独的工作表。谢谢!

这里是我到目前为止的代码:

Sub GetFormData()
    Application.ScreenUpdating = False
    Dim wdApp As New Word.Application
    Dim wdDoc As Word.Document
    Dim CCtrl As Word.ContentControl
    Dim strFolder As String, strFile As String
    Dim WkSht As Worksheet, i As Long, j As Long
    strFolder = GetFolder
    If strFolder = "" Then Exit Sub
    Set WkSht = ActiveSheet
    i = WkSht.Cells(WkSht.Rows.Count, 1).End(xlUp).Row
    strFile = Dir(strFolder & "\*.docm", vbNormal)
    While strFile <> ""
        i = i + 1
        Set wdDoc = wdApp.Documents.Open(Filename:=strFolder & "\" & strFile, AddToRecentFiles:=False, Visible:=False)
        With wdDoc
            For j = 1 To 20
                WkSht.Cells(i, j) = .ContentControls(j).Range.Text
            Next
        End With
        wdDoc.Close SaveChanges:=False
        strFile = Dir()
    Wend
    wdApp.Quit
    Set wdDoc = Nothing: Set wdApp = Nothing: Set WkSht = Nothing
    Application.ScreenUpdating = True
End Sub
Function GetFolder() As String
    Dim oFolder As Object
    GetFolder = ""
    Set oFolder = CreateObject("Shell.Application").BrowseForFolder(0, "Choose a folder", 0)
    If (Not oFolder Is Nothing) Then GetFolder = oFolder.Items.Item.Path
    Set oFolder = Nothing
End Function

0 个答案:

没有答案