如何为VB修改此VBA代码

时间:2015-05-05 11:56:54

标签: vba vb6

我正在使用此VBA代码将covnvert文本框文本转换为常规文本。但它通过shp.TypesString = Left(shp.TextFrame.TextRange.Text, _ shp.TextFrame.TextRange.Characters.Count - 1)上的错误,而我在VB中编译。

我应该在VB的代码中更改什么?

这是VBA代码:

Sub ConvertTextBoxToText()
    Dim shp As Shape
    Dim oRngAnchor As Range
    Dim sString As String

    For Each shp In ActiveDocument.Shapes

        If shp.Type = msoTextBox Then
            ' copy text to string, without last paragraph mark
            sString = Left(shp.TextFrame.TextRange.Text, _
                    shp.TextFrame.TextRange.Characters.Count - 1)

            If Len(sString) > 0 Then
                ' set the range to insert the text
                Set oRngAnchor = shp.Anchor.Paragraphs(1).Range
                ' insert the textbox text before the range object
                oRngAnchor.InsertBefore sString
            End If

            shp.Delete

        End If

    Next shp

    'Strip out beginning and ending textbox markers
    Selection.HomeKey unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting

    With Selection.Find
        .Text = "Textbox start << "
        .Replacement.Text = ""
        .Forward = True
        ' .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With

    Selection.Find.Execute Replace:=wdReplaceAll

    With Selection.Find
        .Text = ">> Textbox end"
        .Replacement.Text = ""
        .Forward = True
        .wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

VB代码:?

你能取悦吗?

1 个答案:

答案 0 :(得分:1)

VB使用VBA作为它的语言。所以不需要转换。 VB是一个app对象和表单包托管VBA,就像Word是一个托管VBA的字处理器。

在您的代码中,您没有连接到Word。在Word中,某些对象可自动生成。在Word之外,您必须连接到它们。

Set xlBook = GetObject("C:\Users\User\Documents\Super.xls")
For each wsheet in xlbook.worksheets
    msgbox wsheet.name
    wsheet.printOut 
next

set xlapp = createobject("Excel.Application")
xlapp.Workbooks.Open "C:\Users\User\Documents\Super.xls"
'43 is 95/97 look up xlExcel9795 in object browser to see other options
xlapp.ActiveWorkbook.SaveAs "C:\Users\User\Documents\Super.xls", 43

Set GetExcelApp = GetObject("", "Excel.Application")
Msgbox GetExcelApp