如何保留宏从中提取的文件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
答案 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方法的更多信息。