假设我声明了以下Excel Interop对象:
Dim ExcelToKeepHidden As New Microsoft.Office.Interop.Excel.Application
Dim SheetToCopy As Microsoft.Office.Interop.Excel.Workbook
...
Dim ExcelToShow As New Microsoft.Office.Interop.Excel.Application
基本上,我在后台保留一个隐藏的Excel实例(其中包含工作表SheetToCopy
- 我一直在做的所有细节工作远离用户的注意)然后,我有一个按钮显示Excel工作表,当用户点击它时,应该使用我的SheetToCopy
对象并将其复制到ExcelToShow
应用程序中。
换句话说,原始SheetToCopy
会停留在ExcelToKeepHidden
应用程序中以进行进一步操作,但ExcelToShow
会在用户点击按钮时显示该工作表的副本。
所以,我的挑战是我不能只使用SheetToCopy.Copy()
方法,因为新工作表位于完全不同的Excel实例中。此外,由于我正在进行的操作,我不能只复制一系列单元格,因为我已经应用了过滤器,因此paste
功能不允许我保持格式化,等
基本上,我看到的唯一解决方案是将工作表的副本复制到同一个Excel应用程序中的新工作簿 ,然后关闭它,然后在第二个excel中重新打开它应用程序,但我想知道是否有更好的方法来实现这个?
有什么想法? (VB或C#代码非常好)
感谢!!!!)
答案 0 :(得分:1)
作为我自己问题的答案(如果其他人面临类似的问题)。
虽然您无法使用以下内容将数据粘贴到两个应用程序中:
RangeWeWant.Copy()
NewSheet.Range(RangeWeWant.Address).PasteSpecial(Microsoft.Office.Interop.Excel.XlPasteType.xlPasteFormats)
NewSheet.Range(RangeWeWant.Address).Value = RangeWeWant.Value
由于Range.PasteSpecial
模块会抛出错误,Sheet.PasteSpecial
没有!
所以这段代码对我有用:
RangeWeWant.Copy()
NewSheet.Range(RangeWeWant.Address).Range("A1").Select()
NewSheet.PasteSpecial(Format:="Microsoft Excel 8.0 Format")
NewSheet.Range(RangeWeWant.Address).Value = RangeWeWant.Value
我知道这是一个简单的解决方案,但它完美地完成了这个技巧!
希望这也有助于其他人!!