vba - 无法在 Excel 中用 VBA 替换 Chr(160)

标签 vba special-characters

我收到的 excel 文件有一段时间了,这些文件通常在帐户后有特殊字符 alt+0160。我通常只是在 excel 中手动替换它,但最近我变得懒惰,想用我的 VBA 脚本替换它。此脚本用于将所需的列插入到我们的数据库中:

Sub insert()

    Dim sSql As String
    Dim db As New ADODB.Connection 'Go to Tools, References and turn on ActiveX Data Objects 2.8 Library
    db.Open "DSN=XXXX;uid=XXXX;pwd=XXXX" 'INSERT ORACLE NAME AND PASSWORD

    For i = 2 To 92 'Change Rows where it starts and ends

            strAccount = Replace(Trim(Range("a" & i).Text), Chr(160), "")

            If IsNumeric(strAccount) Then
                    While Len(strAccount) < 8
                            strAccount = "0" & strAccount
                    Wend
            Else
                    strAccount = UCase(strAccount)
            End If

    sSql = "insert into XXXXX ("
    sSql = sSql & "    BATCH_ID"
    sSql = sSql & "  , ACCOUNT "
    sSql = sSql & "  , ATTORNEY_ID"
    sSql = sSql & "  , ORG_ID"
    sSql = sSql & "  , TRANSACTION_DATE"
    sSql = sSql & "  , DATE_INSERTED"
    sSql = sSql & "  , TRANSACTION_CODE"
    sSql = sSql & "  , AMOUNT"
    sSql = sSql & "  , DESCRIPTION"
    sSql = sSql & "  , DEBTOR_SSN"

    sSql = sSql & ") VALUES ("
    sSql = sSql & "    (SELECT MAX(BATCH_ID) FROM XXXX)"
    sSql = sSql & "  , '" & strAccount & "'"
    sSql = sSql & "  , (SELECT ATTY_ID FROM XXXX WHERE BATCH_ID = (SELECT MAX(BATCH_ID) FROM XXXXX))"
    sSql = sSql & "  , (SELECT ORGANIZATION_ID FROM XXXX WHERE BATCH_ID = (SELECT MAX(BATCH_ID) FROM XXXXX))"
    sSql = sSql & "  , TO_DATE ('" & Trim(Range("B" & i).Text) & "', 'MM/DD/YYYY') "
    sSql = sSql & "  , SYSDATE"
    sSql = sSql & "  , '" & Trim(Range("D" & i).Text) & "'" 'CHANGE TO COLUMN TRANSACTION CODE IS IN
    sSql = sSql & "  , '" & Replace(Replace(Replace(Replace(Trim(Range("C" & i).Text), "$", ""), ",", ""), ")", ""), "(", "") & "'"
    sSql = sSql & "  , '" & Replace(Trim(Range("H" & i).Text), "'", "''") & "'"
    sSql = sSql & "  , '" & Replace(Replace(Trim(Range("F" & i).Text), " ", ""), "-", "") & "'"

    sSql = sSql & ")"


    db.Execute sSql

    DoEvents
    Debug.Print i

    Next i
End Sub

现在我做了一些研究,发现要替换这些字符,您可以使用 Chr(160)。我在我的 Replace 中使用了它,但它似乎并没有起到作用,帐户仍然上传了那些可怕的特殊字符。任何帮助将不胜感激。

最佳答案

这是我解决问题的方法。我创建了一个函数来帮助处理这种情况,现在可以使用了。

Function CleanText(strText As String) As String
    If strText = "" Then
        CleanText = ""
    Else
        strText = Replace(strText, "'", "''")
        strText = Replace(strText, " ", "")
        strText = Replace(strText, vbTab, " ")
        strText = Replace(strText, vbCrLf, " ")
        strText = Replace(strText, Chr(160), "")
        CleanText = strText
    End If
End Function

关于vba - 无法在 Excel 中用 VBA 替换 Chr(160),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20620293/

相关文章:

git - 如果包含特殊字符,如何在 Git 中设置用户名?

function - 如何在vba函数中打开另一个窗体并返回到该函数

excel - 在一系列单元格中获取 5 个最常见的分隔子字符串

excel - 分析和更新动态表宏 VBA

Java FileWriter丢失特殊字符

php - 如何将特殊/保留字符从 HTML 表单发布到 PHP 页面?

c# - VB6 到 C# XML 字符串转换特殊字符

vba - 使用 VBA 从 Access 发送 Outlook 约会

vba - 这个 Excel VBA 宏太慢了

java - 在 JDBC 中插入单引号以进行 SQL 查询不起作用