【发布时间】:2011-04-01 05:48:21
【问题描述】:
所以我想运行 A1-C200 并将所有内容粘贴到 Word 文档中。问题是,我有两种方法可以将它粘贴到 Word 中,但每种方法都有其缺点。
目标:将 A1-C200 复制到 Word 中并保持列布局,不复制空白。
示例 1:
下面的代码将所有内容复制到 Word 中,但从 A1 -> A200、B1 -> B200、C1 -> C200 运行。因为它以这种方式读取我的文件,所以我丢失了列布局。我更喜欢这个例子的解决方案,因为这段代码对我来说看起来更清晰。
iMaxRow = 200
" Loop through columns and rows"
For iCol = 1 To 3
For iRow = 1 To iMaxRow
With Worksheets("GreatIdea").Cells(iRow, iCol)
" Check that cell is not empty."
If .Value = "" Then
"Nothing in this cell."
"Do nothing."
Else
" Copy the cell to the destination"
.Copy
appWD.Selection.PasteSpecial
End If
End With
Next iRow
Next iCol
示例 2:
下面的代码复制了正确的列布局,但也插入了空白。所以如果 A1-A5 和 A80-A90 都填好了,我的 Word 文档里会有 75 个空白。
a1 = Range("A1").End(xlDown).Address
lastcell = Range("C1").Address
Range(a1, lastcell).Copy
With Range("A1")
Range(.Cells(1, 1), .End(xlDown).Cells(2, 3)).Copy
End With
Range("A1:C50").Copy
appWD.Selection.PasteSpecial
【问题讨论】:
-
空白会发生什么?是否要将 A80-A90 的内容上移到 A1-A5 旁边?或者保留 Word 表中已有的值,以免它们被空白覆盖?假设它是一个 Word 表?请澄清。
-
另外,您的第二个代码示例真是一团糟!前7行互为冗余;您正在复制 3 个不同的范围,而不是将它们粘贴到任何地方。
-
哦,示例 2 是我的第一次编码。但是,是的,我希望 A80-A90 的内容向上移动,以便它们位于 A1-A5 之下。
标签: excel vba ms-word selection