3

我是新手。我需要从编写的宏中创建一个新的 excel,并且需要添加一些数据并将其保存为 csv 文件。我收到应用程序定义或对象定义错误。她是密码

Sub splitIntoCsv()
Dim wbIn
Dim wbIn1 As Workbook
Dim header As Variant
Set wbIn = CreateObject("Excel.Application")
wbIn.Workbooks.Add
'wbIn.Worksheets(1).Name = "TestData"
'Set wbIn1 = Workbooks.Open(Sheet1.Range("b25").Value, True, False)
header = Split(ThisWorkbook.Sheets(1).Range("B2").Value, ",")
For k = 1 To 10
DoEvents
Next k
For i = LBound(header) To UBound(header)
'MsgBox header(i)
**wbIn.Worksheets(1).Range("a" & i).Value = header(i)**
Next i
wbIn.Worksheets(1).SaveAs Filename:="D:\file.csv" & Filename, FileFormat:=xlCSV, CreateBackup:=False
End Sub

我在星号线处收到错误。需要帮助,在此先感谢,Raghu。

4

2 回答 2

1

对于您询问的带星号的行,请注意该Split函数返回一个从零开始的数组,因此在您第一次通过循环时,您试图引用 cell A0。因此,将行更改为:

wbIn.Worksheets(1).Range("a" & i+1).Value = header(i)
于 2013-04-17T15:06:52.220 回答
1

下面的代码现在可以工作了,请看一下

Sub splitIntoCsv()
Dim wbIn As Excel.Application
Dim wbIn1 As Workbook
Dim header As Variant

Set wbIn = CreateObject("Excel.Application")
Set wbIn1 = wbIn.Workbooks.Add

header = Split(ThisWorkbook.Sheets(1).Range("B2").Value, ",")
For k = 1 To 10
DoEvents
Next k
For i = LBound(header) To UBound(header)
'**wbIn1.Worksheets(1).Range("a" & i).Value = header(i)**
Next i

wbIn1.SaveAs Filename:="D:\file.csv" & Filename, FileFormat:=xlCSV, CreateBackup:=False
wbIn1.Close
Set wbIn1 = Nothing
wbIn.Application.Quit
Set wbIn = Nothing
End Sub

代码中的第一个问题是您试图使用工作表进行保存。工作表没有保存方法,工作簿有。

在修复代码时,我在内存中有大量的 excel 对象。请查看如何关闭和退出 Excel 应用程序。

于 2013-04-17T12:55:46.847 回答