Я хочу, чтобы моя функция была совместима с многопоточностью, поэтому я стараюсь избегать копирования и вставки.
Пока у меня есть:
function Excel2PPT{
param ($xslx, $targetsheet, $targetrange, $pptx, $targetslide, $npath, $posL, $posT, $posW, $posH)
$Excel = New-Object -ComObject Excel.Application
$workbook = $Excel.workbooks.open($xslx)
$Excel.Visible= $true
$worksheet = $workbook.worksheets.Item($targetsheet)
$range = $worksheet.Range($targetrange)
write-host $range.textrange.text
$objPPT = New-Object -ComObject Powerpoint.Application
$objPPT.Visible ='Msotrue'
$pp1 = $objPPT.Presentations.open($pptx)
$slide = $pp1.Slides.Item($targetslide)
$rows = $range.rows.count
$columns = $Range.columns.count
write-output $pp1.Slides.Item($targetslide).shapes.count
write-output "Rows: " $rows
write-output "Columns: " $Columns
foreach ($cell in $range){
write-output "celldump: " $cell.row $cell.column $cell.text
}
Здесь, кажется, ничего из того, что я пытаюсь сделать, не работает
$TABLE =$slide.shapes.AddTable($range)
$table = $slide.shapes.item($slide.shapes.count)
write-output "tablerows" $table.rows.count
write-output "Tablecolumns" $table.columns.count
$pp1.Saveas($npath)
$Excel.close
$pp1.Close()
$Excel.Quit()
$objPPT.quit()
Stop-Process -name POWERPNT -Force
Stop-Process -name excel -Force
}
Даже после добавления таблицы я пытался использовать hastable on эта форма, и он возвращает ложь, потому что форма, которую я буквально вставил в виде таблицы. Как можно сослаться не только на вставленную таблицу, но и указать c ячейки, чтобы можно было вводить их значения.
Или есть лучший способ передачи данных Excel в таблицу PowerPoint, совместимую с многопоточность?