2010-11-16 69 views
2

我是一个新手程序员,试图自动执行一些重复的工作任务,应该由聪明的脚本而不是人来完成。我做了一些VBA和Java,但非常基本的东西。从VBA中的数组创建CSV

我们必须由被以电子邮件发送到邮箱验证在线表单生成的一些数据,然后在邮件客户端的过滤器(如Outlook 2010)把它放到一个特定的文件夹。我的意图是编写一些VBA,当触发时将检查该文件夹的内容,然后对于每个邮件项目,以字符串形式获取邮件正文文本,创建数组,然后将数组内容写入.csv文件。然后,我将有另一个应用程序(用于Firefox的iMacros)读取csv并与公司内部的企业网络应用程序进行交互,以完成剩下的工作。

我想我可以做所有的,除了数组内容写入CSV。

我工作最好从看代码示例(我也试着去了解MS对象模型文档),但我可以找到编写VBA数组CSV最好的是一样的东西:

'save the file 
    Open sFileName For Output As #7 
    For n = 0 To UBound(MyArray, 1) 
    Print #7, Format(MyArray(n, 0), "0.000000E+00") 
    Next n 
    Close #7 

我认为这是VB而不是VBA,但是这里的一般想法是否有效?或者,如果其他人有一个代码示例让我开始或任何其他指针,我会非常感激。

PS也看到How do I save a 2-dimensional array as a csv file?但无法理解它。

回答

1

我没有用VB工作,所以我不知道打开的文件输出#7,但其是否正常工作(有一些随机的输出进行测试),那么你的代码片段是正确的。唯一的是你应该有另一个打印电话,你添加一个“,”。

只要确保你的最后一次迭代你不添加“”。您可以通过添加一个声明,如果将检查做到这一点如果n = UBound函数(MYARRAY) - 1(这是最后一个元素的索引)

希望它能帮助,

PM

2

的下面的代码用于转换CSV中的二维数组。我没有编写代码,但已经测试过它,它的工作原理!

' SaveAsCSV saves an array as csv file. Choosing a delimiter different as a comma, is optional. 
' 
' Syntax: 
' SaveAsCSV dMyArray, sMyFileName, [sMyDelimiter] 
' 
' Examples: 
' SaveAsCSV dChrom, app.path & "\Demo.csv"  --> comma as delimiter 
' SaveAsCSV dChrom, app.path & "\Demo.csv", ";" --> semicolon as delimiter 
' 
' Rev. 1.00 [8 jan 2003] 
' written by P. Wester 
' [email protected] 


Public Sub SaveAsCSV(MyArray() As Variant, sFilename As String, Optional sDelimiter As String = ",") 

Dim n As Long 'counter 
Dim M As Long 'counter 
Dim sCSV As String 'csv string to print 

On Error GoTo ErrHandler_SaveAsCSV 


'check extension and correct if needed 
If InStr(sFilename, ".csv") = 0 Then 
    sFilename = sFilename & ".csv" 
Else 
    While (Len(sFilename) - InStr(sFilename, ".csv")) > 3 
    sFilename = Left(sFilename, Len(sFilename) - 1) 
    Wend 
End If 

'If MultiDimensional(MyArray()) = False Then '1 dimension 

    'save the file 
' Open sFileName For Output As #7 
' For n = 0 To UBound(MyArray(), 1) 
' Print #7, Format(MyArray(n, 0), "0.000000E+00") 
' Next n 
' Close #7 

'Else 'more dimensional 

    'save the file 
    Open sFilename For Output As #7 
    For n = 1 To UBound(MyArray(), 1) 
    sCSV = "" 
    For M = 1 To UBound(MyArray(), 2) 
     sCSV = sCSV & Format(MyArray(n, M)) & sDelimiter 
    Next M 
    sCSV = Left(sCSV, Len(sCSV) - 1) 'remove last Delimiter 
    Print #7, sCSV 
    Next n 
    Close #7 

'End If 

Exit Sub 


ErrHandler_SaveAsCSV: 
    Close #7