1.) Two ways you can go, change the SQL so the headers are provided. Example: Say the field name was "Foo" but you wanted the header of "Bar". You could do :
SELECT MyTable.Foo as Bar, MyTable.MyField2, MyTable.MyField3 FROM MyTable
1B.) You could also just hardcode the headers in the worksheet and just not pull in the field names:
Option Explicit
Public Sub Example()
Const strSQL_c As String = _
"SELECT * From Customers " & _
"WHERE Country = 'UK' " & _
"ORDER BY CompanyName;"
Dim strConnection As String
Dim strDBPath As String
strConnection = _
"ODBC;DSN=MS Access Database;DBQ=" & _
"C:\Program Files\Microsoft Office\OFFICE11\SAMPLES\Northwind.mdb;"
QueryDB strConnection, Sheet1.Cells(2, 1), strSQL_c
End Sub
Public Sub QueryDB(ByVal connectionString As String, ByVal target As _
Excel.Range, ByVal SQL As String)
Dim qt As Excel.QueryTable
Dim ws As Excel.Worksheet
Set ws = target.Parent
Set qt = ws.QueryTables.Add(connectionString, target, SQL)
qt.FieldNames = False
qt.Refresh BackgroundQuery:=False
End Sub
2.) Yes you will need to update strConnection to be a valid connection string for your Oracle database.