我有一个数据列表,这个数据太长了,无法打开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直接引用我打开的工作簿?