elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  [Powerhshell] Problemas con formula en excel autogenerado
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Powerhshell] Problemas con formula en excel autogenerado  (Leído 1,959 veces)
IISiroII

Desconectado Desconectado

Mensajes: 6


Ver Perfil
[Powerhshell] Problemas con formula en excel autogenerado
« en: 27 Marzo 2020, 18:14 pm »

Tengo este código de powershell para generar un excel que crea 1 libro excel con dos hojas a partir de 2 csv (se que es un poco cutroso, pero al menos me funciona en una gran mayoria xD). El tema está en que hay una columna (llamada Name) de la primera hoja que hace un buscarv en los datos de la segunda hoja pero no se como cambiar la formula para que aplique los cambios a cada fila.
El código es el siguiente:


Código
  1. $sesioncsv= 'C:\temp\sesiones.csv'
  2. $sesionxlsx= 'C:\temp\sesiones.xlsx'
  3. $correoscsv= 'C:\temp\correos.csv'
  4. $correosxlsx= 'C:\temp\correos.xlsx'
  5.  
  6. $processes= Import-Csv -Path $correoscsv
  7. $Excel = new-object -ComObject excel.application
  8. $Excel.Visible = $true
  9. $workBook = $Excel.Workbooks.Add()
  10. $excel.cells.item(1,1) = "SamAccountName"
  11. $excel.cells.item(1,2) = "Name"
  12. $i = 2
  13. foreach($process in $processes) {
  14. $excel.cells.item($i,1) = $process.samaccountname
  15. $excel.cells.item($i,2) = $process.name
  16. $i++
  17. }
  18. $workBook.saveas($correosxlsx)
  19. $Excel.Quit()
  20. Remove-Variable -Name excel
  21. Remove-Variable -Name i
  22. Remove-Item -path $correoscsv
  23.  
  24. $processes= Import-Csv -Path $sesioncsv
  25. $Excel = new-object -ComObject excel.application
  26. $Excel.Visible = $true
  27. $workBook = $Excel.Workbooks.Open($correosxlsx)
  28. $workSheet = $Excel.WorkSheets.Add()
  29. $worksheet.name = 'sesiones'
  30. $excel.cells.item(1,1) = "ServerName"
  31. $excel.cells.item(1,2) = "SessionId"
  32. $excel.cells.item(1,3) = "UserName"
  33. $excel.cells.item(1,4) = "Name"
  34. $excel.cells.item(1,5) = "DomainName"
  35. $excel.cells.item(1,6) = "ServerIPAddress"
  36. $excel.cells.item(1,7) = "TSProtocol"
  37. $excel.cells.item(1,8) = "ApplicationType"
  38. $excel.cells.item(1,9) = "ResolutionWidth"
  39. $excel.cells.item(1,10) = "ResolutionHeight"
  40. $excel.cells.item(1,11) = "ColorDepth"
  41. $excel.cells.item(1,12) = "CreateTime"
  42. $excel.cells.item(1,13) = "DisconnectTime"
  43. $excel.cells.item(1,14) = "SessionState"
  44. $excel.cells.item(1,15) = "CollectionName"
  45. $excel.cells.item(1,16) = "CollectionType"
  46. $excel.cells.item(1,17) = "UnifiedSessionId"
  47. $excel.cells.item(1,18) = "HostServer"
  48. $excel.cells.item(1,19) = "IdleTime"
  49. $excel.cells.item(1,20) = "RemoteFxEnabled"
  50. $i = 2
  51. foreach($process in $processes) {
  52. $excel.cells.item($i,1) = $process.servername
  53. $excel.cells.item($i,2) = $process.sessionid
  54. $excel.cells.item($i,3) = $process.username
  55. $excel.cells.item($i,4).Formula = '=VLOOKUP(C2,Hoja1!A:B,2,"FALSO")'
  56. $excel.cells.item($i,5) = $process.domainname
  57. $excel.cells.item($i,6) = $process.serveripaddress
  58. $excel.cells.item($i,7) = $process.tsprotocol
  59. $excel.cells.item($i,8) = $process.applicationtype
  60. $excel.cells.item($i,9) = $process.resolutionwidth
  61. $excel.cells.item($i,10) = $process.resolutionheight
  62. $excel.cells.item($i,11) = $process.colordepth
  63. $excel.cells.item($i,12) = $process.createtime
  64. $excel.cells.item($i,13) = $process.disconnecttime
  65. $excel.cells.item($i,14) = $process.sessionstate
  66. $excel.cells.item($i,15) = $process.collectionname
  67. $excel.cells.item($i,16) = $process.collectiontype
  68. $excel.cells.item($i,17) = $process.unifiedsessionid
  69. $excel.cells.item($i,18) = $process.hostserver
  70. $excel.cells.item($i,19) = $process.idletime
  71. $excel.cells.item($i,20) = $process.remotefxenabled
  72. $i++
  73. }
  74. $workBook.saveas($sesionxlsx)
  75. Remove-Variable -Name excel
  76. Remove-Variable -Name i
  77. Remove-Item -path $correosxlsx
  78. Remove-Item -path $sesioncsv
  79. Set-ExecutionPolicy Restricted
  80. exit
  81.  

En principio tengo localizado el error:
Código
  1. $excel.cells.item($i,4).Formula = '=VLOOKUP(C2,Hoja1!A:B,2,"FALSO")'
  2.  

Tengo que cambiar ese C2 por algo que cambie por cada fila, es decir (C2, C3, C4,...) asi hasta la ultima fila que genere.

(Por temas de RGPD no puedo mostrar como saco el contenido de cada csv, pero bueno, creo que se sobreentiende viendo cada foreach que es lo que saca xD)



En línea

EdePC
Moderador Global
***
Desconectado Desconectado

Mensajes: 2.156



Ver Perfil
Re: [Powerhshell] Problemas con formula en excel autogenerado
« Respuesta #1 en: 27 Marzo 2020, 20:15 pm »

Saludos,

- Y has probado reutilizando el $i:

Código
  1. $i = 2
  2. foreach ($n in 1..5) {
  3.  $txt = '=VLOOKUP(C' + $i + ',Hoja1!A:B,2,"FALSO")'
  4.  Write-Host $txt
  5.  $i++
  6. }

Result:
Código:
=VLOOKUP(C2,Hoja1!A:B,2,"FALSO")
=VLOOKUP(C3,Hoja1!A:B,2,"FALSO")
=VLOOKUP(C4,Hoja1!A:B,2,"FALSO")
=VLOOKUP(C5,Hoja1!A:B,2,"FALSO")
=VLOOKUP(C6,Hoja1!A:B,2,"FALSO")


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
formula para excel en Visual
Programación Visual Basic
jonnight 0 1,802 Último mensaje 22 Noviembre 2005, 12:46 pm
por jonnight
formula para excel office 2010
Dudas Generales
luisjesus 2 6,020 Último mensaje 10 Julio 2010, 04:25 am
por luisjesus
Problema con formula de Excel 2003
Dudas Generales
Dannysoft 1 2,782 Último mensaje 16 Agosto 2012, 06:32 am
por jvchino
Formula excel ( sencilla )
Software
ElMag0 1 1,663 Último mensaje 20 Febrero 2013, 19:32 pm
por Platanito Mx
duda formula excel
Dudas Generales
asdexiva 4 2,441 Último mensaje 26 Febrero 2015, 00:38 am
por asdexiva
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines