2013-06-25 35 views
1

我不是程序員,所以下面的代碼不是由我創建的。我試圖複製的新帳戶的功能之一,我已經在這條線已經運行到一個錯誤:對於其中一個或多個必需參數沒有給出值

rs.Open "Select * From " & file2 & ".txt order by [Security]", _ 
     conn, adOpenStatic, adLockUnspecified, adCmdText 

,它的引用文件類似於其他文件,所以我什麼不確定問題可能是。我檢查了所有的拼寫,我只是無法弄清楚。一些幫助或者甚至如何解決問題將非常感激。

Public Sub RunRecon() 
    Application.Calculation = xlManual 
    ReconLDSF 
    ReconUCAL 
    ReconCNSL 
    ReconMONT 
    ReconMAC50 
    ReconMAC40 
    ReconTOU 
    ReconVER 
    Application.Calculation = xlAutomatic 
    End Sub 
    Function ReconTOU() 
    Dim conn As New ADODB.Connection 
    Dim rs As New ADODB.Recordset 
    Dim adcomm As New ADODB.Command 
    Dim path As String 
    Dim loDataWrk As Worksheet 
    Set loDataWrk = Worksheets("TOU") 

    loDataWrk.Range("A3:AZ5000").ClearContents 
    path = "L:\ForumAxys\ForumImports\Mellon\Versus\" 
    conn.Open "Provider=Microsoft.ACE" _ 


& ".OLEDB.12.0;Data Source=" & path _ 
    & ";Extended Properties='text;HDR=Yes;" _ 
    & "FMT=Delimited'" 

rs.Open "Select * from [Custody Holdings.csv] where [Account Number] = '492617' and [Traded Shares/Par] <> '0' order by [Security Description 1]", _ 
    conn, adOpenStatic, adLockReadOnly, adCmdText 

cnt = 3 
Name = "NA" 

Do While Not rs.EOF 
If Left(rs.Fields("Security Description 1"), 8) = "THE LINK" Then 
    Name = Replace(rs.Fields("Security Description"), "THE ", "") 
Else 
    Name = rs.Fields("Security Description 1") 
    End If 

loDataWrk.Cells(cnt, 1) = Name 
loDataWrk.Cells(cnt, 2) = CLng(rs.Fields("Settled Shares/Par")) 

cnt = cnt + 1 
rs.MoveNext 
Loop 



Range("A3:B" & cnt - 1).Sort Key1:=Range("A3"), Order1:=xlAscending, Header:=xlGuess, _ 
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ 
DataOption1:=xlSortNormal 
conn.Close 

path = "L:\Axys38\txt\" 
file2 = "tou" 
conn.Open "Provider=Microsoft.ACE" _ 
     & ".OLEDB.12.0;Data Source=" & path _ 
     & ";Extended Properties='text;HDR=Yes;" _ 
     & "FMT=TabDelimited'" 
**rs.Open "Select * From " & file2 & ".txt order by [Security]", _ 
     conn, adOpenStatic, adLockUnspecified, adCmdText** 


cnt = 3 
Do While Not rs.EOF 
loDataWrk.Cells(cnt, 3) = rs.Fields("Security") 
loDataWrk.Cells(cnt, 4) = rs.Fields("Quantity") 
loDataWrk.Cells(cnt, 5) = "=B" & cnt & "-D" & cnt 
cnt = cnt + 1 
rs.MoveNext 
Loop 

conn.Close 
End Function 

下面是兩個.txt文件。第二個工作(沒有改變任何編碼只是參考它),第一個沒有。他們被同一個腳本分割出來。他們似乎有相同的格式和相同的標題...我不明白我可能會改變什麼。

Security Symbol Security Quantity Local ISO Price Spot Rate Total Cost Unrealized Gain/Loss Market Value 
AAAA AAAAA 10000 SGD 1.23 1.2762 13089.5278 -748.20 12341.3258 
BBBB BBBBB 494 USD 23.45 1.0000 13011.6900 -1427.39 11584.3000 



Security Symbol Security Quantity Local ISO Price Spot Rate Total Cost Unrealized Gain/Loss Market Value 
AAA AAAAA 18200 JPY 21.90 97.9000 486611.8961 -88033.76 398578.1410 
+0

這是否意味着這個子文件與其他文本文件一起工作? –

+0

是的。我只是複製和粘貼其他潛艇,並更改適當的部分。 – user2520966

+0

好的。我想這是與該.txt文件有關。我試圖拉入其他.txt文件,他們的工作。它與用於輸出所有文件的腳本相同,所以我不確定它爲什麼會出現不同。我會玩這個。 – user2520966

回答

1

我想你需要添加schema.ini文件來解決你的問題。因此,根據this information你需要按如下步驟進行:

1.創建文本文件schema.ini並將其保存在您的tou.txt文件所在的文件夾中。

2.您schemat.ini應該是這樣的:

[Tou.Txt] 
ColNameHeader = True 
CharacterSet = ANSI 
Format=TabDelimited 

現在您的代碼應爲Tou.Txt作品,但不能用於其他文件,如果他們都在同一個文件夾。如果是這樣,您需要爲您導入的所有其他文本文件添加schema.ini類似的部分。

+0

非常感謝!那工作。我不知道那個文件是什麼或者它真的有什麼用處......稍後有些不適當的研究,但是這很有效。之前所有其他文件都需要包含tou.txt – user2520966

相關問題