To use the first SQL Insert method, you need to know the fieldnames.  That string can be large so it may not be that efficient.
I don't have time to finish this 2nd method right now.  It needs the loop to add  the Excel rows from Height as records.  In the loop, use rs.AddNew,  iterate through each fieldname in the recordset, and add field values. I added a loop and debug.print to show you how to do these things.  After adding the field values for a new record in the range loop, use rs.Update to update  the record set.  I will finish this when I get time.  This method is similar to what I posted in a recent thread.  That user was able to gleam  what he needed.
	' http://www.utteraccess.com/forum/lofiversion/index.php/t1947720.html
Sub InsertIntoMySQL()
  Dim height As Long
  Dim rowtable As Long, row As Long
  Dim strSQL As String
  ' How to add the ADO object:
  ' Tools > References > Microsoft ActiveX Data Objects 2.8 Library
  Dim oConn As ADODB.Connection
  Dim rs As ADODB.RecordSet
  Dim col As Integer, wsName As String, dbName As String
  Dim a As Variant
  
  wsName = "Film"
  dbName = "film"
  
  On Error GoTo ErrHandler
  Set rs = New ADODB.RecordSet
  Set oConn = New ADODB.Connection
  oConn.Open "DRIVER={MySQL ODBC 5.2 ANSI Driver};" & _
    "SERVER=localhost;" & _
    "DATABASE=Sakila;" & _
    "USER=root;" & _
    "PASSWORD=ken;" & _
    "Option=3"
  'number of rows with records
  height = Worksheets(wsName).UsedRange.Rows.Count
  'height = 3
    
' Create RecordSet
  Set rs = New ADODB.RecordSet
' Record locking  ' http://www.utteraccess.com/wiki/index.php?title=Beginners_Guide_To_ODBC
  rs.CursorLocation = adUseClient
  rs.CursorType = adOpenStatic
  rs.LockType = adLockOptimistic
    
  With rs
    strSQL = "SELECT * FROM " & dbName
    rs.Open Source:=strSQL, ActiveConnection:=oConn
  '       Write the field names
    For col = 0 To .Fields.Count - 1
       'Debug.Print rs.Fields(col).Name
    Next col
    MsgBox rs.RecordCount
        
'   Write the recordset
    'Range("A1").Offset(1, 0).CopyFromRecordset rs
    .MoveFirst
    a = rs.GetRows
    'MsgBox "First Record's film_id: " & a(0, 0), , "Second Record's film_id: " & a(0, 1)
    'MsgBox "First Record's title: " & a(1, 0), , "Second Record's title: " & a(1, 1)
    If .RecordCount < 1 Then GoTo EndNow
    .MoveFirst
    For row = 0 To 0  '(.RecordCount - 1)
      For col = 0 To .Fields.Count - 1
        Debug.Print "Row: " & row, "Field: " & col, .Fields(col).Name, .Fields(col).Value
      Next col
      .MoveNext
     Next row
  End With
   
ErrHandler:
  If Err.Description <> "" And Err.Source <> "" Then
    MsgBox Err.Description, vbCritical, Err.Source
  End If
  
EndNow:
    Set rs = Nothing
    oConn.Close
    Set oConn = Nothing
End Sub
 
I inserted the first 3 records from sakila.film database in, https://app.box.com/s/dzbthvp7sn50q9eaijaj.   I just changed the film_id autoincrement values.  If those 3  records can be updated, you will be set.  Notice in the example that  you can add field values by using the field's name or the 0-based index  for the field.
This will then give you two ways to Insert records once I finish the range loop.