Excel VBA不一致地格式化表格边距
我有一个excel表格,可以打开ms word并转到第六个表格,调整单元格边距。我希望整个表格的左右单元格边距为0.08 第一次运行表单时,它可以完美地工作,但是第二次以及之后,它将无法工作。这是我的密码。谁能告诉我为什么会这样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
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,我还是个傻瓜。