Home » excel » excel vba – Database Suggestion for VBA Macro – MS Access

excel vba – Database Suggestion for VBA Macro – MS Access

Posted by: admin May 14, 2020 Leave a comment

Questions:

Require a database suggestion.
I basically need a macro which will do a vLookup a sheet(of ~50K records) against a database of over 1 million keywords.

Will the process become faster if I use MS Access 2007 as the database to vLookup it? Is there any other way to make this process faster by using a different database etc?

Any help or direction is appreciated. Thank you all for your time.

How to&Answers:

If you already have these keywords stored in Excel, it is worth looking a ADO to read the words as a table. This is a quick example, but it is also simple enough to join the list of words to be looked up in an INNER or LEFT JOIN and find the missing and matching words. This can also be done if the keywords are stored externally in a database by using in-line connection strings.

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String
Dim i As Integer, j As Integer

''This is not the best way to refer to the workbook
''you want, but it is very convenient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

''Note that if HDR=No, F1,F2 etc are used for column names,
''if HDR=Yes, the names in the first row of the range
''can be used. 
''
''This is the ACE connection string, you can get more
''here : http://www.connectionstrings.com/excel

strCon = "Provider=Microsoft.Jet.OLEDB.12.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1"";"

''Late binding, so no reference is needed

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

''Watch out for case sensitivity
strSQL = "SELECT [ColumnName] " _
       & "FROM [Sheet1$] " _
       & "WHERE ColumnName ='" & strWord & "'"

rs.Open strSQL, cn, 3, 3

MsgBox rs.GetString

''Tidy up
rs.Close
Set rs=Nothing
cn.Close
Set cn=Nothing