![](/img/trans.png)
[英]How to merge a remote MS Word document with the active document in a VBA macro?
[英]Merge cells in table with ms word VBA macro
我想與vba合並在一個單元中,但不起作用。
mycode:
Sub merge()
Dim x As Integer, i As Integer
x = ActiveDocument.Tables(1).Rows.Count
With ActiveDocument.Tables(1)
For i = 1 To x + 1
If .Cell(i, 2).Range.Text = "" Then
.Cell(Row:=i, Column:=2).merge _
MergeTo:=.Cell(Row:=i, Column:=3)
.Borders.Enable = False
End If
Next i
End With
End Sub
在文檔中,我有一個表(五行和三列)。
對於excel VBA代碼編寫器,這是一個常見的概念性問題,我們過去將空白單元格視為空(“”)。 但是實際上一個看似空白的Word表單元格包含兩個不可見字符(至少在word 2007中),即chr(13)
和Chr(7)
。 可以用簡單的語句進行測試,例如
MsgBox Len(.Cell(1, 1).Range.Text)
MsgBox Asc(Right(.Cell(1, 1).Range.Text, 1))
MsgBox Asc(Left(.Cell(1, 1).Range.Text, 1))
為了使您的代碼正常工作,可以將其修改為類似
Sub merge()
Dim x As Integer, i As Integer, S As String
x = ActiveDocument.Tables(1).Rows.Count
With ActiveDocument.Tables(1)
For i = 1 To x
S = .Cell(i, 2).Range.Text
S = Replace(S, Chr(13), "")
S = Replace(S, Chr(7), "")
If S = "" Then
.Cell(Row:=i, Column:=2).merge _
MergeTo:=.Cell(Row:=i, Column:=3)
.Borders.Enable = False
End If
Next i
End With
End Sub
或測試行可以修改為
If Len(.Cell(i, 2).Range.Text) = 2 Then
也無法理解為什么在您的代碼中您要迭代到ActiveDocument.Tables(1).Rows.Count+1
所以對於測試,我僅For i = 1 To x
嘗試更改:
If .Cell(i, 2).Range.Text = "" Then
至:
If Split(.Cell(i, 2).Range.Text,vbCr)(0) = "" Then
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.