VBA:Excel在进行选择性粘贴的时候,为什么还是带有格式?

cocly 2011-10-02 11:05:03
例子如下:
两个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

为什么这样做粘贴的内容还是存在格式?请问如何解决?
...全文
492 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
cocly 2011-10-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 freshsuncy 的回复:]
引用 4 楼 cocly 的回复:
我试了一下,还是有问题:
1、采取上面代码的方式,运行时提示“类Range的Select方法无效”;

2、在偶然的一次试成功后,得到的结果却是,复制的是按照图片的方式引用的;

请问各位,是什么原因?还有其他解决办法么?

你能不能在粘贴前不关闭打开的文件,比如改成这样:

VB code

Dim myApp As New A……
[/Quote]

1、在粘贴前没有关闭文件,是粘贴以后才关闭的文件,但是这个文件在整个过程中都处于not activate状态;
2、也试了一下freshsuncy上面的代码,还是存在同样的问题;

实在不知道问题出在什么地方,麻烦大家再帮忙考虑一下,谢谢~!
龙湖金风 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cocly 的回复:]
我试了一下,还是有问题:
1、采取上面代码的方式,运行时提示“类Range的Select方法无效”;

2、在偶然的一次试成功后,得到的结果却是,复制的是按照图片的方式引用的;

请问各位,是什么原因?还有其他解决办法么?
[/Quote]
你能不能在粘贴前不关闭打开的文件,比如改成这样:

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
cocly 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 freshsuncy 的回复:]
VB code
Set wkSht = myApp.Workbooks.Open(sFileName).Sheets(1)
wkSht.Range("A4:B" & cycle).Copy


这个复制不同于一般的单元格内容复制,它是将复制的内容作为一个工作簿对象,所以它的选择性粘贴和普通单元格的选择性粘贴是不一样的。
如果只是粘贴文本值,
需要改成:

VB code
……
[/Quote]

我试了一下,还是有问题:
1、采取上面代码的方式,运行时提示“类Range的Select方法无效”;

2、在偶然的一次试成功后,得到的结果却是,复制的是按照图片的方式引用的;

请问各位,是什么原因?还有其他解决办法么?
龙湖金风 2011-10-11
  • 打赏
  • 举报
回复
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:="文本"
z_wenqian 2011-10-03
  • 打赏
  • 举报
回复
明天给你好好想想
cocly 2011-10-02
  • 打赏
  • 举报
回复
使用的是office 2003

找不出原因~!

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧