Ich habe eine Excel-Anwendung, die eine Verbindung zur HANA-Datenbank mit ODBC herstellt und Tabellendaten im nächsten Blatt auf Knopfdruck abruft. Ich verwende den folgenden Code zum Abrufen von Daten aus der Datenbank: -VBA-Fehler, wenn chinesische Zeichen in der Datenbanktabelle vorhanden sind
Function importRoutine(sheet As String, provider As String, databaseschema As String, server As String, app As String, row As Long, column As Long, commandText As String, displayname As String, errorFlag As Boolean) As Integer
Debug.Print commandText
Dim l As QueryTable
Dim rs As Object
Dim cnt As ADODB.Connection
Dim cmd As ADODB.Command
Dim iCols As Integer
Set cnt = New ADODB.Connection
Set cmd = New ADODB.Command
Set rcd = New ADODB.Recordset
Dim rangesheet As String
rangesheet = Sheets(sheet).Cells(row + 1, column).Address
Dim connectionsheet As String
connectionsheet = "Driver=" + provider + ";SERVERNODE=" + server + ";" + getAuthentication + "; CS=" + databaseschema + ""
cnt.ConnectionString = connectionsheet
cnt.Open
Set cmd.ActiveConnection = cnt
cmd.commandText = commandText
cmd.CommandType = adCmdText
rcd.Open commandText, cnt '', adOpenStatic
Set rs = CreateObject("ADODB.RECORDSET")
rs.ActiveConnection = cnt
rs.Open commandText, cnt
With Sheets(sheet).ListObjects.Add(SourceType:=3, Source:=rs, Destination:=Range(Sheets(sheet).Cells(row, column).Address)).QueryTable
'.commandText = commandText
'.CommandType = xlCmdSql
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCell
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = False
.RefreshPeriod = 0
.ListObject.Name = displayname
.PreserveColumnInfo = False
On Error Resume Next
.Refresh BackgroundQuery:=False
End With
Sheets(sheet).ListObjects(displayname).TableStyle = "TableStyleMedium10"
importRoutine = 0
Call deleteConnection
CloseRecordset:
rs.Close
Set rs = Nothing
CloseConnection:
cnt.Close
Set cnt = Nothing
On Error GoTo 0
End Function
Der Code funktioniert einwandfrei, wenn die Tabelle englische Zeichen enthält. Wenn die Tabelle jedoch Sonderzeichen wie etwa chinesische Schriftzeichen enthält, kann sie die Daten nicht in das nächste Blatt und in den Fehler werfen.
Gibt es Einschränkungen, dass VBA Daten, die chinesische Zeichen enthalten, nicht abrufen/anzeigen kann?
Was ist der Fehler, bitte? Und welcher Code wird hervorgehoben, wenn es passiert? – Winterknell