Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA不一致地格式化表格边距_Vba_Excel_Ms Word - Fatal编程技术网

Excel VBA不一致地格式化表格边距

Excel VBA不一致地格式化表格边距,vba,excel,ms-word,Vba,Excel,Ms Word,我有一个excel表格,可以打开ms word并转到第六个表格,调整单元格边距。我希望整个表格的左右单元格边距为0.08 第一次运行表单时,它可以完美地工作,但是第二次以及之后,它将无法工作。这是我的密码。谁能告诉我为什么会这样 Public Sub Table() Dim wrdApp Dim wrdDoc Set wrdApp = CreateObject("Word.Application") wrdApp.Visible = False Set

我有一个excel表格,可以打开ms word并转到第六个表格,调整单元格边距。我希望整个表格的左右单元格边距为0.08

第一次运行表单时,它可以完美地工作,但是第二次以及之后,它将无法工作。这是我的密码。谁能告诉我为什么会这样

Public Sub Table()

    Dim wrdApp
    Dim wrdDoc
    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False
    Set wrdDoc = wrdApp.Documents.Open("\\FileLocation")

    With wrdDoc
        'Goes to 6th table and selects it
        wrdApp.Selection.Goto wdGoToPage, wdGoToAbsolute, 1
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Goto What:=wdGoToTable, Which:=GoToNext
        wrdApp.Selection.Tables(1).Select


        With wrdApp.Selection.Tables(1)
            .TopPadding = InchesToPoints(0)
            .BottomPadding = InchesToPoints(0)
            .LeftPadding = InchesToPoints(0.08)
            .RightPadding = InchesToPoints(0.08)
            .Spacing = 0
            .AllowPageBreaks = True
            .AllowAutoFit = True
        End With

End Sub

为什么要使用
wrdApp.Selection.Goto What:=wdGoToTable,Which:=GoToNext
?为什么不设置wrdTbl=wrdDoc.Tables(6)并使用它呢?所有这些代码可能都引用了另一个表

试着这样做:

Private Sub Sample()   
    Dim wrdApp As Object, wrdDoc As Object, wrdTbl As Object

    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False

    Set wrdDoc = wrdApp.Documents.Open("\\FileLocation")

    Set wrdTbl = wrdDoc.Tables(6)

    With wrdTbl
        .TopPadding = wrdApp.InchesToPoints(0)
        .BottomPadding = wrdApp.InchesToPoints(0)
        .LeftPadding = wrdApp.InchesToPoints(0.08)
        .RightPadding = wrdApp.InchesToPoints(0.08)
        .Spacing = 0
        .AllowPageBreaks = True
        .AllowAutoFit = True
    End With    
End Sub

为什么要使用
wrdApp.Selection.Goto What:=wdGoToTable,Which:=GoToNext
?为什么不设置wrdTbl=wrdDoc.Tables(6)并使用它呢?所有这些代码可能都引用了另一个表

试着这样做:

Private Sub Sample()   
    Dim wrdApp As Object, wrdDoc As Object, wrdTbl As Object

    Set wrdApp = CreateObject("Word.Application")
    wrdApp.Visible = False

    Set wrdDoc = wrdApp.Documents.Open("\\FileLocation")

    Set wrdTbl = wrdDoc.Tables(6)

    With wrdTbl
        .TopPadding = wrdApp.InchesToPoints(0)
        .BottomPadding = wrdApp.InchesToPoints(0)
        .LeftPadding = wrdApp.InchesToPoints(0.08)
        .RightPadding = wrdApp.InchesToPoints(0.08)
        .Spacing = 0
        .AllowPageBreaks = True
        .AllowAutoFit = True
    End With    
End Sub

我认为您必须使用
Application.InchesToPoints()
所以它看起来是这样的:.LeftPadding=wrdApp.Application.InchesToPoints(0.08)。righpadding=wrdApp.Application.InchesToPoints(0.08)@ShelnesElie:您不需要
.Application。
我们已经将
wrdApp
声明为对象(应用程序)。我想你必须使用
Application.InchesToPoints()
所以看起来是这样的:.LeftPadding=wrdApp.Application.InchesToPoints(0.08)。righpadding=wrdApp.Application.InchesToPoints(0.08)@ShelnesElie:你不需要
.Application。
我们已经声明了
wrdApp
为对象(应用程序)。在这里,请阅读如何避免选择。这是为excel编写的,但对word也是如此。人们在这里发布的大多数评论和建议也会出现在您的问题中。在用同样的代码问另一个问题之前,人们会想,为什么你没有实现这些东西……我想我必须改掉使用宏记录器的习惯。说到vba,我仍然是个呆子。另外,在这里,请阅读如何避免选择,这是为excel编写的,但对word也是如此。人们在这里发布的大多数评论和建议也会出现在您的问题中。在用同样的代码问另一个问题之前,人们会想,为什么你没有实现这些东西……我想我必须改掉使用宏记录器的习惯。说到vba,我还是个傻瓜。