2015-10-14 64 views
0

因此,我正在寫一個Excel VBA程序,它將具有特定名稱的所有csv文件讀入工作簿上的不同工作表中。在調試模式下的公式與不同的值如果不是

正在讀取沒有問題的文件。問題出現在將數據從文件轉換到數組時,該數組旨在包含目錄中所有文件中的所有相關數據。

爲了讀取文件,並通過線分離,

我使用:

Do Until EOF(1) 

     Line Input #1, LineFromFile 

     lineitems = Split(LineFromFile, Chr(10)) 

再往下的模塊,我經過了LineItem到一個數據陣列時該行內的特定標準數據得到滿足。爲了清楚起見,表達式將文件行中的日期值與文件名稱上的日期標記進行比較。

ElseIf (Left(lineitems(Line), 8) = Right(Left(FileTime(FileNum), 6), 2) + "/" + Right(Left(FileTime(FileNum), 4), 2) + "/" + Left(FileTime(FileNum), 2)) Then     

       Proxy = CStr(lineitems(Line)) 
       DataArray(InverterNumber - 1, m(InverterNumber - 1)) = Proxy 

正如你可以看到,我添加了一個代理一步,試圖確保數據去跨越,都無濟於事。我還添加了一個故障安全,確保不空行進入DataArray中:

If Len(DataArray(InverterNumber - 1, m(InverterNumber - 1))) = Len(CStr(lineitems(Line))) Then 

        Test(InverterNumber - 1, m(InverterNumber - 1)) = Len(DataArray(InverterNumber - 1, m(InverterNumber - 1))) 
        m(InverterNumber - 1) = m(InverterNumber - 1) + 1 

       End If 

現在,如果我運行該程序在它的發行工作方法,它將返回一系列空列,這是不應該的因爲故障安全。 但是,當我通過調試模式運行它時,如果我觀察該步驟,它會正確添加數據。

有沒有什麼辦法可以確保值被正確翻譯?

有什麼我可以做得更好嗎?

+0

你能否提供完整的模塊,因爲你的問題會導致任何人想要回答的很多假設?添加一些將由您的代碼分析的示例字符串。在你插入一些數組到其他數組(DataArray(InverterNumber - 1,m(InverterNumber - 1)),我們看不到它們是如何構建的? – mtholen

+0

你可以從這個保存箱文件夾下載編譯器和文件: https://www.dropbox.com/sh/9sph17eyc2m0gq3/AACunecHXcqpMBAiP5CUEvUJa?dl=0 – Voz

回答

1

這讀取文件一行,但不返回換行符(S),其劃定的線:

Line Input #1, LineFromFile 

那麼這樣的:

lineitems = Split(LineFromFile, Chr(10)) 

你真的有行在CSV文件的「行」內提供字符?如果是,那麼它將有助於顯示一些示例內容。

+0

我在收存箱文件夾添加了文件: https://www.dropbox.com/sh/9sph17eyc2m0gq3/AACunecHXcqpMBAiP5CUEvUJa? dl = 0 不確定你是用換行符表示的,但是...... – Voz

相關問題