2014-06-30 24 views
0

我知道如何連接Excel進行手工MySQL中,這是單擊數據標籤 - >從其他來源 - >數據連接嚮導...將數據導入到Excel的VBA,並得到相同的樣式做手工

加載的數據以這種樣式顯示。需要注意的是默認的行頭有着不同的背景顏色比下面的線,和其它線路的背景顏色,邊框顏色爲白色,等

enter image description here

我還學會了如何導入數據由vba。

Sub ConnetMySQL() 

    Set conn = New ADODB.Connection 

    conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};" & _ 
    "Server = localhost; " & _ 
    "Poer = 3306" & _ 
    "Database = NBA;" & _ 
    "UID = root; PASSWORD = ; OPTION=3" 
    conn.Open 


    Set rs = New ADODB.Recordset 
    strSQL = "SELECT * FROM `nba`.`game`" 
    rs.Open strSQL, conn 


    Dim myArray() 

    myArray = rs.GetRows() 

    kolumner = UBound(myArray, 1) 
    rader = UBound(myArray, 2) 

    For K = 0 To kolumner ' Using For loop data are displayed 
     Worksheets("Game").Range("a5").Offset(0, K).Value = rs.Fields(K).Name 
     For R = 0 To rader 
      Worksheets("Game").Range("A5").Offset(R + 1, K).Value = myArray(K, R) 
     Next 
    Next 


    rs.Close 
    'MsgBox strOutput 
    conn.Close 
    Set conn = Nothing 
    Set rs = Nothing 
End Sub 

但由vba加載的數據沒有任何樣式。 enter image description here

我相信我必須錯過我的代碼中的東西。我應該如何修改代碼,以便通過vba加載的數據具有與手動加載的數據相同的樣式?

回答

0

以下代碼將在活動工作表上查找1個表格(假設僅有信息是表格)。這對錶格的大小沒有關係。它會假定有標題。它會隨着圖片格式化而格式化。

Sub test() 

Set X = Sheets("Sheet1").UsedRange 

ActiveSheet.ListObjects.Add(xlSrcRange, X, , xlYes).Name = _ 
     "Table1" 
    X.Select 
    ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleMedium9" 


End Sub 

下面的代碼是未經測試,但它應該爲你工作:

Sub ConnetMySQL() 

Set conn = New ADODB.Connection 

conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};" & _ 
"Server = localhost; " & _ 
"Poer = 3306" & _ 
"Database = NBA;" & _ 
"UID = root; PASSWORD = ; OPTION=3" 
conn.Open 


Set rs = New ADODB.Recordset 
strSQL = "SELECT * FROM `nba`.`game`" 
rs.Open strSQL, conn 


Dim myArray() 

myArray = rs.GetRows() 

kolumner = UBound(myArray, 1) 
rader = UBound(myArray, 2) 

For K = 0 To kolumner ' Using For loop data are displayed 
    Worksheets("Game").Range("a5").Offset(0, K).Value = rs.Fields(K).Name 
    For R = 0 To rader 
     Worksheets("Game").Range("A5").Offset(R + 1, K).Value = myArray(K, R) 
    Next 
Next 

Set X = Sheets("Game").UsedRange 
Sheets("Game").ListObjects.Add(xlSrcRange, X, , xlYes).Name = _ 
     "Table1" 
X.Select 
    Sheets("Game").ListObjects("Table1").TableStyle = "TableStyleMedium9" 

rs.Close 
'MsgBox strOutput 
conn.Close 
Set conn = Nothing 
Set rs = Nothing 

end sub