2010-11-16 93 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