VBA代码保持文件的原始格式

时间:2015-03-28 01:57:02

标签: vba excel-vba word-vba excel

如何保留宏从中提取的文件MyWB的格式?我添加了.Value,它会覆盖数据,而不是颜色/字体。工作簿中的列A有条件地为颜色和 Wingdings 字体格式化。

Sub Merge_Files_4P()

Debug.Print ActiveDocument.Range(1).Tables(1).Range.Rows(2).Cells(1).Range
Dim MyExcel As Excel.Application
Dim MyWB As Excel.Workbook
Set MyExcel = New Excel.Application
Set MyWB = MyExcel.Workbooks.Open("C:\Users\dani7844\Desktop\Copy of Strategic Programs Roadmap.xlsm")

For i = 1 To 6
    ActiveDocument.Range(1).Tables(1).Range.Rows(2).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(2, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(3).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(3, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(4).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(4, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(5).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(5, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(6).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(6, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(7).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(7, i).Value
    ActiveDocument.Range(1).Tables(1).Range.Rows(8).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(8, i).Value
Next i

MyWB.Close False
Set MyExcel = Nothing
Set MyWB = Nothing

End Sub

1 个答案:

答案 0 :(得分:0)

x = y操作中使用范围对象时,用于范围对象的默认属性是Value。这就是为什么你只获取值,而不是所有(格式化,条件格式等)。你应该替换这些行:

ActiveDocument.Range(1).Tables(1).Range.Rows(2).Cells(i).Range = MyWB.Sheets("Sheet1").Cells(2, i).Value

使用范围对象的Copy方法,即:

MyWB.Sheets("Sheet1").Cells(2, i).Copy destination:= ActiveDocument.Range(1).Tables(1).Range.Rows(2).Cells(i).Range

在官方文档中了解有关Range.Copy方法的更多信息。