是否有任何方法可以使用上面尝试的电源shell从Excel复制并粘贴到我的脚本。我希望在另一张表格中将更多30列粘贴在Row中。我累了各种各样的组合..我能够复制,但在行中粘贴,例如O2行失败。
我想要列A1:A要复制到行O2,P2,r2 ....就像从列到行的转置一样。我没有收到任何错误。基本上,它不是从列到行的复制。尝试给row = 2和第2列Row ++,但它没有工作。
下面的方法是厌倦的方式之一。
$path = Read-Host -Prompt ("Enter the Sheet Location")
$xl = New-Object -ComObject excel.application
$xl.visible = $true
$wbk = $xl.Workbooks.open($path)
$ws1 = $wbk.WorkSheets.item("Old Data")
$ws2 = $wbk.WorkSheets.item("New Data")
$ws1.activate()
#Pasting Specific Name from first column
$xlPasteValues = -4163 # Values only, not formulas
$xlCellTypeLastCell = 11 # to find last used cell
$used = $ws1.usedRange
$lastCell = $used.SpecialCells($xlCellTypeLastCell)
$column = $lastCell.column
$range = $ws1.UsedRange
[void]$ws1.Range("A2$column").Copy()
[void]$ws2.Range("O18:O18").PasteSpecial(-4163)
$ws2.activate()
#Pasting Monthly perfomance
$xlPasteValues = -4163 # Values only, not formulas
$xlCellTypeLastCell = 11 # to find last used cell
$used = $ws1.usedRange
$lastCell = $used.SpecialCells($xlCellTypeLastCell)
$column = $lastCell.column
$range = $ws1.UsedRange
[void]$ws1.Range("B2$column").Copy()
[void]$ws2.Range("O8:O8").PasteSpecial(-4163)
$ws2.activate()
答案 0 :(得分:0)
The PasteSpecial
method接受多个参数。
Object PasteSpecial(
XlPasteType Paste,
XlPasteSpecialOperation Operation,
Object SkipBlanks,
Object Transpose
)
第四个参数是Transpose
,默认为false
。那就是你想要的那个。
第二个参数是Operation
,它接受XlPasteSpecialOperation
枚举 - specified here。第三个参数是SkipBlank
,可以是true
或false
。这两个参数以及转置都是可选的,这就是原始代码中PasteSpecial
工作的原因。
# Option 1 - specify all arguments.
$xlPasteValues = -4163
$xlPasteSpecialOperationNone = -4142 # default
[void]$ws2.Range("O2").PasteSpecial($xlPasteValues,$xlPasteSpecialOperationNone,$false,$true)
# Option 2 - skip what's not required
$xlPasteValues = -4163
[void]$ws2.Range("O2").PasteSpecial($xlPasteValues, [System.Type]::Missing, [System.Type]::Missing, $true)
答案 1 :(得分:0)
这个选项已经累了,但我已经厌倦了,但它不是我能实现的,因为它粘贴了唯一值,因为列中有不同的数据,所有这些都需要粘贴在行中。 $ xlPasteValues = -4163
[void] $ ws2.Range(“O2”)。PasteSpecial($ xlPasteValues,[System.Type] :: Missing,[System.Type] :: Missing,$ true)