Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: klaine en 7 Abril 2011, 22:39 pm



Título: [VBS] Duda con Excel.application (WXP=W7?)
Publicado por: klaine en 7 Abril 2011, 22:39 pm
Hola, tengo el siguiente script, en windows xP me funka bien, en windows 7 se vuelve loko  :-\, básicamente crea una planilla de excel para un ciber café, usa excel.application para crear la primera parte de la planilla, y luego copio el resto con wscript.shell.sendkeys, uso tiempos entre las pulsaciones de teclas para que no se me caiga el script (y de paso excel, porque me ha pasado), bueno les dejo el script:

Código
  1.  
  2. set exc=createobject("excel.application")
  3. set wss=createobject("wscript.shell")
  4.  
  5. exc.visible = true
  6.  
  7. ' preparando el archivo
  8.  
  9. set ambiente = exc.workbooks.add()
  10. wss.sendkeys "+({f11})"
  11. wscript.sleep 200
  12. wss.sendkeys "+({f11})"
  13. wscript.sleep 200
  14. wss.sendkeys "+({f11})"
  15. wscript.sleep 200
  16. wss.sendkeys "+({f11})"
  17. wscript.sleep 200
  18.  
  19. 'preparando la hoja PCs
  20.  
  21. set fecha1 = exc.range("B2")
  22. fecha1.interior.colorindex = 28
  23. fecha1.formula = "Ingrese fecha"
  24. fecha1.borders.colorindex = 1
  25.  
  26. set fecha2 = exc.range("C2")
  27. fecha2.interior.colorindex = 28
  28. fecha2.borders.colorindex = 1
  29. fecha2.formula = "01-01-2012"
  30. fecha2.select
  31. wss.sendkeys "{f2}"
  32. wss.sendkeys "{enter}"
  33.  
  34. set fecha3 = exc.range("C8")
  35. fecha3.interior.colorindex = 28
  36. fecha3.borders.colorindex = 1
  37. fecha3.formula = "=C2+1"
  38. fecha3.select
  39. wss.sendkeys "{f2}"
  40. wss.sendkeys "{enter}"
  41.  
  42. set rango1 = exc.range("C10:H10")
  43.  
  44. rango1.interior.colorindex = 1
  45. rango1.font.colorindex = 4
  46. rango1.font.bold = true
  47.  
  48. exc.range("c10").formula = "PC 1"
  49. exc.range("d10").formula = "PC 2"
  50. exc.range("e10").formula = "PC 3"
  51. exc.range("f10").formula = "PC 4"
  52. exc.range("g10").formula = "PC 5"
  53. exc.range("h10").formula = "PC 6"
  54.  
  55. set rango2 = exc.range("C11:h19")
  56. rango2.interior.colorindex = 15
  57. rango2.borders.colorindex = 1
  58.  
  59. set rangof = exc.range("C20:H20")
  60.  
  61. rangof.interior.colorindex = 28
  62. rangof.borders.colorindex = 1
  63. rangof.select
  64.  
  65. set f1 = exc.range("C20")
  66. f1.formula = "=suma(C11:C19)"
  67. f1.select
  68. wss.sendkeys "{f2}"
  69. wss.sendkeys "{enter}"
  70. wscript.sleep 666
  71. wss.sendkeys "{up}"
  72. wss.sendkeys "^(c)"
  73. wss.sendkeys "+({right})"
  74. wss.sendkeys "+({right})"
  75. wss.sendkeys "+({right})"
  76. wss.sendkeys "+({right})"
  77. wss.sendkeys "+({right})"
  78. wss.sendkeys "{enter}"
  79.  
  80. wscript.sleep 200
  81.  
  82. set total = exc.range("H22")
  83. total.formula = "=suma(C11:H19)"
  84. total.select
  85. wss.sendkeys "{f2}"
  86. wss.sendkeys "{enter}"
  87. ' -------------------------
  88. 'copiando el cuadro al resto de la hoja
  89.  
  90. set stotal = exc.range("G22")
  91. stotal.formula = "Total"
  92.  
  93. set rango3 = exc.range("C8:H22")
  94. rango3.select
  95. wss.sendkeys "^(c)"
  96.  
  97. dim control
  98. control=1
  99.  
  100. ' bajar 16 y pegar
  101.  
  102. do
  103.  
  104. for i=1 to 20 step 1
  105.  
  106. wss.sendkeys "{down}"
  107.  if control = 32 then
  108.     exit do
  109.  end if
  110. next
  111.  
  112. wss.sendkeys "^(v)"
  113. wscript.sleep 200
  114. control = control + 1
  115. loop
  116.  
  117. exc.columns("B").entirecolumn.autofit
  118.  
  119. ' eso, el resto está listo para pasar a la siguiente hoja
  120. for x=8 to 628 step 20
  121.  
  122. if x>8 then
  123. resta= x-20
  124. exc.cells(x, 3).formula = "=C"&resta&"+1"
  125. exc.cells(x, 3).select
  126. wss.sendkeys "{f2}"
  127. wss.sendkeys "{enter}"
  128. wscript.sleep 200
  129. end if
  130.  
  131. fecha2.formula = ""
  132.  
  133. next
  134.  
  135. exc.range("C8").formula = "=C2"
  136. exc.range("c8").select
  137. wss.sendkeys "{f2}"
  138. wss.sendkeys "{enter}"
  139.  
  140. '*****************************************
  141. '*****************************************
  142. '             SEGUNDA HOJA
  143. '*****************************************
  144. '*****************************************
  145.  
  146. wss.sendkeys "^{pgdn}"
  147.  
  148.  

De antemano gracias  por sus respuestas :D

Saludos  ;)


Título: Re: [VBS] Duda con Excel.application (WXP=W7?)
Publicado por: Novlucker en 8 Abril 2011, 02:41 am
No lo he probado, pero desde ya te digo que es una mala idea, el envio de teclas tiene que utilizarse como última opción, intenta buscar funciones nativas que hagan lo que necesitas :P (Excel se puede automatizar en su totalidad)

Saludos