从excel复制粘贴到记事本时会给出双引号

时间:2016-10-27 07:29:12

标签: excel vba excel-vba

我尝试从excel中的值创建单元格中的SQL查询。但是当我复制单元格并粘贴到任何窗口时,它会给我双引号。有没有办法删除它。

Range("H16").Value = "Select distinct(description), merchant_name from(" & vbCrLf & "select distinct description, merchant_name from table_phase" & Range("G3").Value
        Range("H16").Value = Range("H16").Value & vbCrLf & patternString & vbCrLf & "Union all" & vbCrLf
        Range("H16").Value = Range("H16").Value & "select distinct description, merchant_name from table_phase" & Range("G4").Value
        Range("H16").Value = Range("H16").Value & vbCrLf & patternString & vbCrLf & ") order by merchant_name, description"
        Range("H16").Value = Trim(Range("H16").Value)
        Range("H16").WrapText = True
        Range("H16").Select
        Selection.Copy

范围G4和G3包含24或25之类的数字。模式字符串包含:    其中的商品名称为(' Value1',' Value2')

我已经像这样生成了模式字符串

patternString = "where merchant_name in ("
        For i = 1 To UBound(addedMerch, 1) - 1
            patternString = patternString & " '" & addedMerch(i, 1) & "',"

            If (i - (4 * (i \ 4))) = 0 Then
                patternString = patternString & vbCrLf
            End If
        Next

如果模式太多,我已经使用了下一行字符。我想在不同的行上获取SQL查询以避免混淆

2 个答案:

答案 0 :(得分:1)

问题是由生成的文本中的换行符引起的。如果您在单元格中键入id Alt-Enter a,然后将单元格复制到NotePad,则可以看到相同的效果。

解决此问题的最简单方法是在生成单元格H16时不包含b序列。

另一种方法是像你当前那样生成H16,然后将创建的值复制到另一个单元格(我将使用J16作为示例)将所有vbCrLf替换为空格,并且然后将J16的值复制到剪贴板。

vbCrLF

SQL将CR / LF视为空格,因此不关心它们是否被空格替换。

注意:This answer to another question显示了如何将文本直接复制到剪贴板,而无需通过中间单元格。

答案 1 :(得分:0)

我想打破这就是我使用vbCrLf导致问题的原因。我想到了一个解决方案。而不是vbCrLf我使用了管道分隔符(“|”)并将值粘贴到单元格上。然后使用文本到列函数我已经分离了查询。

set<Node>::iterator findByNum(int n)
{
    for (set<Node>::iterator it = this->children.begin(); it != this->children.end(); ++it)
    {
        if ((*it).num == n)
            return it;
    }
    return this->children.end();
}