如何将段落的集合从word复制到excel?

时间:2017-01-26 17:03:16

标签: vba excel-vba word-vba excel

我有一个数据列表,这个数据太长了,无法打开excel - 当我尝试打开它时,我收到一条消息,说它只能打开65000行左右的文件,并建议使用word将它们分开。我试图制作一个宏:

1)将这些数据分成65000套

2)将每个组粘贴到工作表中,以便excel可以使用它

到目前为止我所拥有的:

Sub divider()

Dim dt1 As Document
Dim oex As Excel.Application
Dim wb1 As Workbook
Dim savepath As String
Dim cutrange As Variant
Set oex = New Excel.Application
oex.Visible = True
Set wb1 = Workbooks.Add
While wb1.Sheets.Count <> 1
    wb1.Sheets(2).Delete
Wend
Set dt1 = ThisDocument

If dt1.Paragraphs.Count > 65000 Then
    Set cutrange = dt1.Range(dt1.Paragraphs(1).Range.Start, dt1.Paragraphs(65000).Range.End)
    If wb1.Sheets(Sheets.Count).Cells(1, 1) <> "" Then
        wb1.Sheets.Add After:=Sheets.Count
    End If
    cutrange.Cut Destination:=wb1.Sheets(wb1.Sheets(Sheets.Count)).Cells(1, 1)
    wb1.Sheets(Sheets.Count).Cells(1, 1).TextToColumns Destination:=wb1.Sheets(1).Cells(1, 1)
Else
    Set cutrange = dt1.Content
    If wb1.Sheets(Sheets.Count).Cells(1, 1) <> "" Then
        wb1.Sheets.Add After:=Sheets.Count
    End If
    cutrange.Cut Destination:=wb1.Sheets(Sheets.Count).Cells(1, 1)
    wb1.Sheets(Sheets.Count).Cells(1, 1).TextToColumns Destination:=wb1.Sheets(1).Cells(1, 1)
End If

End Sub

(Just..imagine,现在有更多的texttocolumns参数)

现在我的具体斗争是在cutrange.Cut Destination:=wb1.Sheets(Sheets.Count).Cells(1, 1)行上它返回一个错误&#34;运行时错误448:未找到命名参数&#34;。我不确定那里有什么未命名的。我尝试将wb1.Sheets(Sheets.Count)转换为wb1.Sheets(wb1.Sheets(Sheets.Count)),但这只是给了我&#34;运行时错误13:类型不匹配&#34;,我也不知道哪些不匹配。

更一般地说,我 非常了解vba如何使用word。用离散的细胞来理解它更容易......哪个词没有。这是正确的方法吗?

奖金问题:我打开了一组这样的数据,并且数据中有1,920万字,它最终达到了太多页面,并且单词说它不能再打开了。有没有办法在纸张消失之前将这些数据分开?

编辑:当我追捕更多时,我刚刚发现了关于shell命令的信息。我不知道如何将生成的应用程序/表格分配给oex / wb1,以便我可以在代码中引用它。我有这个而不是上面的内容:

Sub divider()

Dim dt1 As Document
Dim oex As Excel.Application
Dim wb1 As Workbook
Dim savepath As String
Dim cutrange As Variant

AppActivate (Shell("C:\Program Files (x86)\Microsoft Office\Office14\EXCEL", vbNormalNoFocus))
Set oex = GetObject(class:="Excel.Application")
oex.Visible = True
Set wb1 = oex.ActiveWorkbook

不幸的是,即使Excel 2010已经打开也不会改变这样的事实,即这仍然设置oex等于Excel 2003(我也试过设置oex=shell(path)但是没有飞行)。怎么了,微软?如何将oex设置为Excel 2010或wb1直接引用我打开的工作簿?

0 个答案:

没有答案