2010-09-29 107 views
1

我在一個名爲「Employee_States_File」的excel文件中有一個表。該表包含兩列名稱和狀態。兩列都填充了數據。省表中包含諸如「NE,WA」等國家的縮寫。我有另一個名爲「States_File」的excel文件,其中包含一個具有兩列的表格:縮寫和FullStateName。該表被認爲是一個查找表,以查找基於縮寫的完整狀態名稱。現在,我想在VB6中編寫代碼,以便當用戶單擊某個按鈕時,Excel文件「Employee_States」的表中的所有縮寫名稱都將根據Excel工作表的查找表更改爲完整狀態名稱「 States_File」。 它有道理嗎? 請幫忙,VB6中的查找功能

+0

這些是Excel文件? XLS或XLSX?爲什麼不使用[Excel VLOOKUP函數](http://office.microsoft.com/zh-cn/excel-help/vlookup-HP005209335.aspx)並直接在Excel中執行? – MarkJ 2010-09-30 08:24:09

+0

我確實使用了VLOOKUP功能。然而,它讓我瘋狂,因爲它能處理大約一半的記錄,然後它給了我一個錯誤:「無法獲得Worksheet函數類的vlookup屬性」。我被告知這個錯誤意味着VLOOKUP函數在查找表的第一列中找不到值的匹配。當我手動更改該值並將其替換爲先前找到的值時,它仍然掛在那裏。我不知道爲什麼它給了我那個錯誤信息。我正在使用XLS文件。任何想法? 。我不能直接在Excel中執行此操作。 – guest1 2010-09-30 15:20:55

回答

0

如果您可以將它們轉換爲csv文件(逗號分隔文本文件),您可以使用Jet數據庫引擎並執行正常的SQL連接。

我用它來設置連接。

Public Function OpenTextConnection(ByVal FileName As String) As Connection 
    Dim FSO As FileSystemObject 
    Dim DBFolder As String 
    Dim TS As TextStream 

    Set FSO = New FileSystemObject 
    DBFolder = FSO.GetParentFolderName(FileName) 

    If FSO.FileExists(FSO.BuildPath(DBFolder, "Schema.ini")) Then 
     FSO.DeleteFile (FSO.BuildPath(DBFolder, "Schema.ini")) 
    End If 

    Set TS = FSO.CreateTextFile(FSO.BuildPath(DBFolder, "Schema.ini")) 
    TS.WriteLine "[" & FSO.GetFileName(FileName) & "]" 
    TS.WriteLine "Format=CSVDelimited" 
    TS.WriteLine "ColNameHeader = True" 
    TS.WriteLine "MaxScanRows = 0" 
    TS.Close 

    Set OpenTextConnection = New Connection 


    If FSO.FolderExists(DBFolder) Then 
     OpenTextConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFolder & ";Extended Properties=""text;HDR=Yes;FMT=Delimited;"";" 
    Else 
     MsgBox DBFolder & " Does not exists.", vbExclamation 
    End If 

End Function 

每個文件都是連接中的表,您可以執行SQL連接。注意這個例子只是簡單地打開一個表格。您可以使用任何有效的SQL語法。

Dim DB1 As Connection 
Dim TB As Recordset 
Dim FSO As FileSystemObject 
Dim tImport As New DBImportList 
Set FSO = New FileSystemObject 
Set tImport = New DBImportList 
If FSO.FileExists(FileName) Then 
    Set DB1 = OpenTextConnection(FileName) 
    Set TB = New Recordset 

    TB.Open "SELECT * FROM [" & FSO.GetFile(FileName).Name & "]", DB1, adOpenKeyset, adLockOptimistic, adCmdText 

End If 
+0

有沒有辦法在不將它們轉換爲csv的情況下使用.xls文件?僅當用戶安裝了Microsoft Office時,纔可以使用 – guest1 2010-09-29 19:12:05

+0

。您可以使用Excel導出的com庫直接訪問.xls文件。我不推薦這種簡單的表查找,因爲它引入了不需要的依賴關係。 – 2010-10-01 12:57:09