很久以前我创建了一个Powershell脚本来完成我在标题中写的内容:将选择从File-A复制到File-B。我需要它的方式(以及我的方式)是在应用程序启动时打开“模板”文件,用户选择一个范围,然后它们有4个选项按钮。最常用的是“复制选择”,它将范围选择的内容复制到特定目录中的所有Excel文件。使用Powershell,可以使用以下代码(虽然需要花费很长时间才能确定):
$strRow = $Excel.ActiveCell.Row
$strColumn = $Excel.ActiveCell.Column
$Range = $sourceWorksheet.Cells.item($strRow,$strColumn)
$Range.Select
$Excel.Selection.Copy() | Out-Null
foreach ($item in $files)
{
$destinationPath = $item.FullName
$destinationWorkBook = $Excel.WorkBooks.Open($destinationPath)
$destinationWorkSheet = $destinationWorkBook.worksheets.item(1)
$destRange = $destinationWorkSheet.Cells.item($strRow,$strColumn)
$destRange.Select
$destRange.PasteSpecial() | Out-Null
$destinationWorkBook.Close($true)
}
这很好,但我显然想要摆脱Powershell。我使用WPF创建了一个C#应用程序,看起来效果很好,我只需要让逻辑工作。我似乎无法真正针对范围选择。我已经尝试了许多方法和属性,似乎没有人得到我需要的东西。我可以获得实际的“选择”单元格,但我无法获得任何类型的范围。我检索的对象通常具有Rows和Columns属性,因此如果需要,我想我可以推断出这些信息......但是必须有更好的方法。
现在我最接近的就是使用Application.ActiveCell.Copy();
(或选择),但是当我尝试粘贴它时似乎有问题。
有什么想法吗?我似乎无法弄清楚为什么这不起作用。
编辑:我已经解决了我自己的问题...对不起,如果有人浪费时间看这个。我是个白痴......我花了一点时间,想出怎么做。下面的代码完美无缺 - 我遇到的主要问题是使用Worksheet.Cells.item
需要括号。我仍然需要遍历要申请的文件,但这应该照顾实际的逻辑:
int intRow = myApp.ActiveCell.Row;
int intCol = myApp.ActiveCell.Column;
myApp.Selection.Copy();
Range destRange = mySheet.Cells.Item[intRow,intCol];
destRange.PasteSpecial();
希望我没有浪费任何人的时间,他们现在可以解决这个问题!