Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过VBA将数据导入Excel,并获得与手动相同的样式_Vba_Excel - Fatal编程技术网

通过VBA将数据导入Excel,并获得与手动相同的样式

通过VBA将数据导入Excel,并获得与手动相同的样式,vba,excel,Vba,Excel,我知道如何手动将excel连接到mysql,即单击数据选项卡->其他源->数据连接向导 加载的数据以这种样式显示。请注意,默认情况下,首行的背景颜色与下面的行不同,其他行的背景颜色也会改变,边框颜色为白色,等等 我还学习了如何通过vba导入数据 Sub ConnetMySQL() Set conn = New ADODB.Connection conn.ConnectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};" &

我知道如何手动将excel连接到mysql,即单击数据选项卡->其他源->数据连接向导

加载的数据以这种样式显示。请注意,默认情况下,首行的背景颜色与下面的行不同,其他行的背景颜色也会改变,边框颜色为白色,等等

我还学习了如何通过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加载的数据没有任何样式。


我相信我的代码中一定漏掉了什么。我应该如何修改代码,使vba加载的数据与手动加载的数据具有相同的样式?

下面的代码将在活动工作表上查找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