Excel到文本VBA前面带有问号 - 如何修复?

时间:2017-09-25 14:20:37

标签: excel-vba vba excel

我在Excel中对VBA很新。我使用这段代码从网上的示例片段拼凑而成,将Excel中的一列单元格转换为文本文件:

Private Sub CommandButton1_Click()
Dim myFile As String, rng As Range, cellValue As Variant, i As Integer, j As Integer
Dim FName As String
Dim FPath As String

Set fsT = CreateObject("ADODB.Stream"): 'Create Stream object
fsT.Type = 2: 'Specify stream type – we want To save text/string data.
fsT.Charset = "utf-8": 'Specify charset For the source text data.

FPath = "C:\WHIT\ParamGen"
FName = Sheets("Sheet1").Range("b49").Text

myFile = FPath & "\" & FName

Set rng = Range("B2: B42 ")

Open myFile For Output As #1

For i = 1 To rng.Rows.Count
    For j = 1 To rng.Columns.Count

cellValue = rng.Cells(i, j).Value

If j = rng.Columns.Count Then
    Print #1, cellValue
Else
    Print #1, cellValue,
End If

    Next j
Next i

Close #1

End Sub

问题是我的Excel文件中的第一个单元格包含以下文本:

@!= 1

...它会在生成的文本文件中显示如下:

?@!= 1

excel文件中的其他所有内容都会被写入文本文件而不会出现问题,但该问号会影响正在为此文件生成的软件中的导入功能。

关于让这个问号消失的任何想法都会消失吗?

3 个答案:

答案 0 :(得分:1)

您是否尝试删除"?"使用文件中的代码,例如:

If left(cellvalue,1)="?" then 
    application.substitute(cellvalue,"?","") 
end if

答案 1 :(得分:0)

我使用包含@!= 1的第一个单元格运行此代码,并将其正确写入文本文件@!= 1(不添加)。您是否检查过单元格B2是否包含任何不可打印的字符?

答案 2 :(得分:0)

我找到了解决方案。 Excel将第一个单元格中的@!= 1视为一个函数,但它不是一个函数函数。我最好的猜测是它将一个不可见的字符解析为文本文件。使用' @!= 1 覆盖违规单元格就可以了。