1

我正在尝试自己学习 VBA,我试图获取电子邮件的正文,将其解析出来,然后仅将数组的一个元素保存到 Excel 文件中。我就是这样做的,我的问题是我似乎无法让它更新文件中已有的内容。它只是用新的电子邮件信息重写并保存它。我对你的问题是:我的代码需要什么才能继续写入我的 excel 文件而不摆脱已经存在的内容。

Sub FMK(Item As Outlook.MailItem)

Const PathName = "C:\Users\carter\Desktop\fmk.xlsx"

Dim arrLines As Variant, _
varLines As Variant, _
RowNext As Integer, _
xlApp As Excel.Application, _
ExcelWkBk As Excel.Workbook, _
excWkb As Object, _
excWks As Object, _
temp As String

arrLines = Split(Item.Body, vbCrLf)

Set xlApp = Application.CreateObject("Excel.Application")
Set excWkb = xlApp.Workbooks.Add()
Set excWks = excWkb.ActiveSheet
temp = Trim(arrLines(32))

RowNext = 1
With excWks
    excWks.Cells(RowNext, 1) = temp
End With
RowNext = RowNext + 1

excWkb.SaveAs PathName
excWkb.Close

'this is just for testing purposes  I will remove later 
MsgBox (arrLines(32))
End Sub

感谢您的时间!

4

1 回答 1

0

您将需要识别最后使用的行并将新数据放在其后。就像是:-

RowNext = excWks.Cells.SpecialCells(xlCellTypeLastCell).Row + 1
with excWks
...

(并且您可能希望将 RowNext 设为 Long 而不是 Integer)

xlCellTypeLastCell 可能不可靠,因为它仅在保存文件时才重置 - 也许这足以满足您的需求。如果没有,请参阅OzGrid以获取其他建议。

于 2012-12-27T18:47:38.670 回答