2014-02-10 1 views
0

.xlsm 파일에서 명명 된 워크 시트를 삭제하려고합니다..xlsm 파일에서 워크 시트 삭제

예를 들어 here이 게시되었지만 제대로 작동하지 않습니다. .xlsm 파일을 열어 워크 시트가 삭제되었는지 여부를 확인하면 여전히 남아 있습니다.

$file2 = 'c:\file.xlsm' # destination's fullpath 

$xl = new-object -c excel.application 
$xl.displayAlerts = $false # don't prompt the user 

$wb2 = $xl.workbooks.open($file2) # open target 

$sh2_wb2 = $wb2.sheets | where {$_.name -eq "myWorksheet"} 
$sh2_wb2.delete() #Delete original sheet in template 

$wb2.close($true) # close and save destination workbook 
$xl.quit() 
spps -n excel 

내가 잘못 뭐하는 거지 : 여기

내 코드?

편집 :

나는 그것을 열 때 Excel에서 볼 개체 수 있도록 내 코드를 변경했습니다. 나는 다음 delete 호출이 전송되는 것으로 나타났습니다하지만 삭제가 발생하는지 여부를 확인하도록 요구하고있다 : Data may exist in the sheet(s) selected for deletion. To permanently delete the data, press Delete.

내가 다음 내 코드에 displayAlerts = $false 몇 가지 더 추가하려고 시도하지만 여전히 저를주고있다 신속한.

내 업데이트 된 코드는 아직 작동하지 않지만 다음과 같습니다.

$file2 = 'c:\file.xlsm' # destination's fullpath 

$xl = new-object -com excel.application -Property @{Visible = $true} 
$xl.displayAlerts = $false # don't prompt the user 

$wb2 = $xl.workbooks.open($file2) # open target 
$wb2.displayAlerts = $false # don't prompt the user 

$sh2_wb2 = $wb2.sheets | where {$_.name -eq "myWorksheet"} 
$sh2_wb2.displayAlerts = $false # don't prompt the user 
$sh2_wb2.delete() #Delete original sheet in template 

$wb2.close($true) # close and save destination workbook 
$xl.quit() 
spps -n excel 
+0

코드는 작동합니다. 당신은 실행할 권리가 있습니까? http://stackoverflow.com/questions/4037939/powershell-execution-of-scripts-is-disabled-on-this-system 또한 적어도 1 개의 보이는 시트가 있어야합니다. 따라서 myWorksheet 만 보이는 경우, 오류가 발생합니다. –

+0

올바른 길로 나를 설정하십시오. 제 편집을 참조하십시오. –

+0

원본 코드에서 myWorksheet에 데이터가 있고 displayAlerts를 $ true로 설정하면 시트가 삭제되지 않습니다. displayAlerts가 $ false이면 시트는 아무런 문제없이 삭제됩니다. 이것은 Excel 2010입니다. –

답변

0

나를 위해, 자사의 도움이 시도 :

$Excel = New-Object -ComObject Excel.Application 
$workbook = $Excel.workbooks.add() 
#working with sheets 
$workbook.worksheets.item("Sheet1").Delete()