vb中在excel中调用 PasteSpecial方法进行粘贴的问题~

后头痛的问题~~~~
xlapp是用于复制的excel文件 代码省略
newxlapp是用于粘贴的excel文件,
请看下面二行代码 问题就在第二行:
1.错误信息:rang不支持PasteSpecial此方法
2.根据我查询的MSDN信息,PasteSpecial参数为(Paste, Operation, SkipBlanks, Transpose)
, 3.这里我主要是想实现一下转置的功能,当我把第二行改为:
NewxlApp.Sheets(1).Range("a1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone
则程序运行正确!但无法转置.

当加上False, True两个参数 则出现上面的错误信息.

xlApp.Worksheets(1).Range("AA1:AB3").Copy
NewxlApp.Sheets(1).Range("a1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, True
....
请哪位高手看一下 问题出在哪里?
其他代码调试无误~
MSDN相关资料:
http://msdn2.microsoft.com/zh-cn/library/microsoft.office.tools.excel.xmlmappedrange.pastespecial(VS.80).aspx
以下代码为临时模拟:(而且该问题目前刊登在CSDN社区,补充有字符限制 省略部分说明 原说明查看下面地址)
http://community.csdn.net/Expert/topic/5769/5769124.xml?temp=.2187616程序代码:
Dim xlApp As Excel.Application
Dim xlsheet As Excel.Worksheet

Dim NewxlApp As Excel.Application
Dim NewxlBook As Excel.Workbook
Dim NewxlSheet As Excel.Worksheet

Private Sub Command1_Click()
Set xlApp = New Excel.Application
xlApp.Workbooks.Open App.Path & "\2.XLS"
Call Crxls
Set xlsheet = xlApp.Sheets(1)

xlsheet.Range("A1:E7").Copy
NewxlSheet.Range("A1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, True

Set xlApp = Nothing
Set xlsheet = Nothing

NewxlApp.Visible = True
Set NewxlApp = Nothing
Set NewxlBook = Nothing
Set NewxlSheet = Nothing
End Sub
Sub Crxls() '新建一个Excel
Set NewxlApp = CreateObject("Excel.Application")
Set NewxlBook = NewxlApp.Workbooks.Add
Set NewxlSheet = NewxlBook.Worksheets(1)
End Sub

要实现转置,最后一个参数必须为TRUE

你的这两行代码,没什么问题,报错确实挺奇怪
你把完整的代码贴出来看看……

===================

我有2个问题:
①:你的代码在哪儿运行的?
②:运行时,没有其它错误?

========================
Set xlsheet = xlApp.Sheets(1)可能是主要问题的所在。
你参照一下下面的代码,修改了3处。

①:先新建一个.xls文件,在第一个表的A1:E7添加数据
②:进入VBE,将下面的代码复制,运行
========================
Dim xlApp As Excel.Application
Dim xlsheet As Excel.Worksheet

Dim NewxlApp As Excel.Application
Dim NewxlBook As Excel.Workbook
Dim NewxlSheet As Excel.Worksheet

Private Sub Command1_Click()
Set xlApp = Excel.Application '去掉new
Call Crxls
Set xlsheet = xlApp.Workbooks(1).Sheets(1) '添加.Workbooks(1)

xlsheet.Range("A1:E7").Copy
NewxlSheet.Range("A1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, True

Set xlApp = Nothing
Set xlsheet = Nothing

NewxlApp.Visible = True
Set NewxlApp = Nothing
Set NewxlBook = Nothing
Set NewxlSheet = Nothing
End Sub
Sub Crxls()
Set NewxlApp = Excel.Application '修改CreateObject("Excel.Application")
Set NewxlBook = NewxlApp.Workbooks.Add
Set NewxlSheet = NewxlBook.Worksheets(1)
End Sub

================2007-9-28补充================

Option Explicit

Dim xlApp As Excel.Application
Dim xlsheet As Excel.Worksheet

Dim NewxlApp As Excel.Application
Dim NewxlBook As Excel.Workbook
Dim NewxlSheet As Excel.Worksheet

Private Sub Command1_Click()

Set xlApp = New Excel.Application
xlApp.Visible = True
xlApp.Workbooks.Open "E:\My Documents\1.XLS" '换成你自己的文件路径App.Path & "\2.XLS"

Call Crxls

Set xlsheet = xlApp.Workbooks(1).Worksheets(1) 'xlApp.Sheets(1)不可靠

xlsheet.Range("A1:E7").Copy
NewxlSheet.Range("A1").PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, True

Set xlApp = Nothing
Set xlsheet = Nothing

' NewxlApp.Visible = True 放在前面容易看运行过程
Set NewxlApp = Nothing
Set NewxlBook = Nothing
Set NewxlSheet = Nothing

End Sub
Sub Crxls()

Set NewxlApp = xlApp 'CreateObject("Excel.Application")可能是造成“PasteSpecial方法不可用”的根本原因
Set NewxlBook = NewxlApp.Workbooks.Add
Set NewxlSheet = NewxlBook.Worksheets(1)

End Sub

'---------------------------------------------

几点说明:
①:
你试图运行两个Excel.Application,这是不可取的
你可能把Excel.Application理解为2个.xls文档了
事实上,无论你同时打开几个xls文档,都只有1个Excel.Application

②:
使用xlApp.Sheets(1)引用第一个表是很不可靠的
理论上,Sheets对象同时包括Chart和Worksheet对象。

③:
上面的代码,只在你的代码的基础上稍作修改(有注释),
不过,要新建一个VB6.0项目(.exe)来测试,而不要用.dll。
温馨提示:答案为网友推荐,仅供参考
相似回答