VB6中打印的一个奇怪案例

时间:2013-08-23 18:14:08

标签: vb6 stream ms-word

我在VisualBasic 6中有这段代码:

iLinha = FreeFile
Open strPath For Output As #iLinha
Dim strHeader As String

'***Assign a value to the string `Content`  

Print #iLinha, strHeader

现在我正在尝试使用Word.Application执行相同的代码,你知道吗?
当我编码时:

Word.Selection.TypeText strHeader  

我得到的只是代码和字符,如:{rtf1\ansi\ansipg1252\deff0....

有人可以向我解释上面的代码吗?打印#iLinha

更新

streamFile.Type = adTypeBinary
streamFile.Open
streamFile.Write rstAux.Fields("text")
streamFile.SaveToFile strCaminhoTemp, adSaveCreateOverWrite
streamFile.Close  

Obs:我尝试将adTypeBinary更改为adTypeText,但发生了多次错误......

也许这段代码与我的问题有关?!!

3 个答案:

答案 0 :(得分:4)

看起来strHeader是格式化文本,而不是纯文本。

在某些时候看起来strHeader从RTF(RichText)控件获取其值,它会获得格式化文本,而不是纯文本。

有关RTF控件的更多信息:MSDN

答案 1 :(得分:4)

不确定为什么我的帖子不会在一段时间之前收到。无论如何,正如乔治指出的那样,它只是RTF文本。我的建议是您将文本应用于RTF控件并将其作为纯文本检索回来。这将删除所有RTF代码并留下您想要的纯文本。

要执行此操作,在VB6中打开项目时,请按Ctrl + T,然后选中“Microsoft Rich TextBox Control”。您可以将此新控件添加到表单中,但使其不可见。然后将RTFText属性设置为strHeader,并获取富编辑控件的Text属性。

答案 2 :(得分:1)

要从RTF格式转换为文本格式,如果您对使用RTF控件不感兴趣,可以手动编写这样的内容,如您所示 - 我不建议这样做:

Dim RTF As String
RTF = strHeader

Dim Text As String
Dim X As Long
Dim InTag As Boolean
Dim TagStarted As Boolean
For X = 1& To Len(RTF)
    Select Case Mid$(RTF, X, 1&)
    Case "{", "}"
        If InTag And Not TagStarted Then
            Text = Text & Mid$(RTF, X, 1&)
            TagStarted = True
        End If
    Case "\"
        If InTag And Not TagStarted Then
            Text = Text & Mid$(RTF, X, 1&)
            TagStarted = True
        Else
            InTag = True
            If Mid$(RTF, X, 5&) = "\par " Or Mid$(RTF, X, 4&) = "\par\" Or Mid$(RTF, X, 6&) = "\line " Or Mid$(RTF, X, 5&) = "\line\" Then
                Text = Text & vbCrLf
            End If
        End If
    Case " "
        If InTag Then
            InTag = False
        Else
            Text = Text & " "
        End If
    Case Else
        If InTag Then
            TagStarted = True
        Else
            Text = Text & Mid$(RTF, X, 1&)
        End If
    End Select
Next X

MsgBox Text

请注意,可能需要进行一些调整,因为代码很快就会编写。