为什么我的vba代码将逗号视为新行?

时间:2013-11-04 12:46:17

标签: excel vba text-files powerpoint

我有这个代码从文本文件中读取,当行以“Q”开头时它是一个问题而“R”和“W”分别是错误的和正确的答案分别读取到形状。 但问题是,如果文本中的任何地方都有逗号,我的powerpoint宏会将其视为新行。有关如何解决此问题的任何帮助吗? 这是代码

Open ActivePresentation.Path & "\" & "questions.txt" For Input As #1
nextSlideNum = 1
nextAnswerNum = 1
Do Until EOF(1)
    Input #1, nextLine
    If Left$(nextLine, 1) = "Q" Then 'The line starts with Q; it's a question
        nextSlideNum = nextSlideNum + 1
        Set oSld = _
            ActivePresentation.Slides.AddSlide(nextSlideNum, _
            ActivePresentation.SlideMaster.CustomLayouts(2))
        oSld.Shapes(1).TextFrame.TextRange.Text = _
            Trim(Right$(nextLine, Len(nextLine) - 1))
        nextAnswerNum = 1
    ElseIf Left$(nextLine, 1) = "R" Then 'Right answer
        Set oShp = ActivePresentation.Slides(nextSlideNum).Shapes _
            .AddShape(msoShapeActionButtonCustom, 100, _
            120 + (85 * (nextAnswerNum - 1)), 500, 75)
        oShp.TextFrame.TextRange.Text = Trim(Right$(nextLine, Len(nextLine) - 1))
        oShp.ActionSettings(ppMouseClick).Action = ppActionRunMacro
        oShp.ActionSettings(ppMouseClick).Run = "RightAnswerButton"
        nextAnswerNum = nextAnswerNum + 1
    ElseIf Left$(nextLine, 1) = "W" Then 'Wrong answer
        Set oShp = ActivePresentation.Slides(nextSlideNum).Shapes _
            .AddShape(msoShapeActionButtonCustom, 100, _
            120 + (85 * (nextAnswerNum - 1)), 500, 75)
        oShp.TextFrame.TextRange.Text = Trim(Right$(nextLine, Len(nextLine) - 1))
        oShp.ActionSettings(ppMouseClick).Action = ppActionRunMacro
        oShp.ActionSettings(ppMouseClick).Run = "WrongAnswerButton"
        nextAnswerNum = nextAnswerNum + 1
    ElseIf Trim(nextLine) = "" Then
        'Ignore blank lines
    Else
        MsgBox _
            "Sorry, I don't know what to do with: " _
            & Chr$(13) & nextLine
    End If
Loop

1 个答案:

答案 0 :(得分:2)

使用Line Input代替Input

Input进行一些解析,包括用逗号分隔,并转换一些值,如#TRUE#和#NULL#。 Line Input输入完整的行并且不进行转换。