VBA:Excel在进展选择性粘贴的时候,为什么还是带有格式
VBA:Excel在进行选择性粘贴的时候,为什么还是带有格式?
例子如下:
两个xls,一个写了部分VBA,导入另一个xls,将第二个xls中的一个sheet内的部分单元格内容,粘贴到第一个xls制定单元格内,在进行粘贴时:是只针对“值”进行粘贴,但是粘贴过来还是存在格式,为什么?
代码如下;
第一个xls:
'导入第二个xls,并进行选择性粘贴
Dim myApp As New Application, wkSht As Worksheet
sFileName = Application.GetOpenFilename
If sFileName = "False" Then
GoTo endSub
End If
Set wkSht = myApp.Workbooks.Open(sFileName).Sheets(1)
wkSht.Range("A4:B" & cycle).Copy
Worksheets("第一个文件").Range("A2").PasteSpecial Paste:=xlPasteValues
为什么这样做粘贴的内容还是存在格式?请问如何解决?
------解决方案--------------------
这个复制不同于一般的单元格内容复制,它是将复制的内容作为一个工作簿对象,所以它的选择性粘贴和普通单元格的选择性粘贴是不一样的。
如果只是粘贴文本值,
需要改成:
------解决方案--------------------
你能不能在粘贴前不关闭打开的文件,比如改成这样:
例子如下:
两个xls,一个写了部分VBA,导入另一个xls,将第二个xls中的一个sheet内的部分单元格内容,粘贴到第一个xls制定单元格内,在进行粘贴时:是只针对“值”进行粘贴,但是粘贴过来还是存在格式,为什么?
代码如下;
第一个xls:
'导入第二个xls,并进行选择性粘贴
Dim myApp As New Application, wkSht As Worksheet
sFileName = Application.GetOpenFilename
If sFileName = "False" Then
GoTo endSub
End If
Set wkSht = myApp.Workbooks.Open(sFileName).Sheets(1)
wkSht.Range("A4:B" & cycle).Copy
Worksheets("第一个文件").Range("A2").PasteSpecial Paste:=xlPasteValues
为什么这样做粘贴的内容还是存在格式?请问如何解决?
------解决方案--------------------
Set wkSht = myApp.Workbooks.Open(sFileName).Sheets(1)
wkSht.Range("A4:B" & cycle).Copy
这个复制不同于一般的单元格内容复制,它是将复制的内容作为一个工作簿对象,所以它的选择性粘贴和普通单元格的选择性粘贴是不一样的。
如果只是粘贴文本值,
需要改成:
Set wkSht = myApp.Workbooks.Open(sFileName).Sheets(1)
wkSht.Range("A4:B" & cycle).Copy
Worksheets("第一个文件").Range("A2").Select
ActiveSheet.PasteSpecial Format:="文本"
------解决方案--------------------
你能不能在粘贴前不关闭打开的文件,比如改成这样:
Dim myApp As New Application, wkSht As Worksheet
Dim wk1 As Workbook, wk2 As Workbook
Dim sFileName
Set wk1 = ActiveWorkbook
sFileName = Application.GetOpenFilename
If sFileName = "False" Then
GoTo endSub
End If
Workbooks.Open sFileName
Set wk2 = ActiveWorkbook
Set wkSht = wk2.Sheets(1)
wkSht.Range("A4:B" & Cycle).Copy
wk1.Activate
Worksheets("第一个文件").Range("F20").PasteSpecial Paste:=xlPasteValues
wk2.Close