He sido atrapado en este para el último par de horas, así que realmente podría hacer con un poco de ayuda. Estoy tratando de conseguir numéricos (enteros y decimales) los valores de una hoja de cálculo de Excel y usarlo para crear un gráfico en mi forma de usar el gráfico de control o incluso mostrar ese valor en un cuadro de texto.

El Valor de la celda A11 es «2003» y K11 es «12.00» pero los valores devueltos son 0 y 12. Puedo utilizar las fórmulas para calcular el resto de los valores de y. Lo extraño es que el texto funciona bien. La celda A3 tiene «inicial», que viene de nuevo como «inicial», es sólo en los números que no funcionan.

    xlApp = New Excel.Application
    xlWorkBook = xlApp.Workbooks.Open("C:\File.xls")    
    xlWorkBook = xlApp.Workbooks.Add("C:\File.xls")
    xlSheet = xlWorkBook.Worksheets(1)

    Dim x1 As String
    Dim y1 As String
    x1 = xlSheet.Range("A11").Value.ToString     
    y1 = xlSheet.Range("K11").Value.ToString
    MsgBox(x1)

Gracias de antemano

  • ¿Cuáles son los «formato de número» de estas células? Se puede cambiar esta propiedad de su aplicación?
  • El formato de número de la celda es general para x y el número y
  • Esto es ciertamente extraño. Puede haber problemas con formatos especiales, pero «general» tiende a funcionar bien (tal vez para hacer completamente seguro de que debería codificar el formato de número a texto: .NumberFormat = «@»). No sé cuál podría ser el problema, me gustaría necesita para poner a prueba las condiciones específicas.
  • Me di cuenta de mi propio error…yo había elegido mal la hoja de excel! Arggh!
  • Esto suena un poco más lógico 🙂 No es gran cosa, todo el mundo comete errores. Sin duda, esto le ayudará a no repetir este error en el futuro.
InformationsquelleAutor zxzxzx | 2013-09-18

1 Comentario

  1. 1

    Trate de usar .Text en lugar de .Value. Se va a recuperar el valor que se muestra en lugar de el valor de la celda:

    x1 = xlSheet.Range("A11").Text
    y1 = xlSheet.Range("K11").Text

    De esta forma se ignora incluso los formatos, por ejemplo, el valor 7.7777 en una celda con un formato para mostrar 2 decimales a mostrar 7.78, y eso es lo que .Text va a recuperar.

    • Gracias por la respuesta SysDragon. El uso de .texto de mejora, pero todavía se devuelve 0 para x1 cuando debería ser 2300. y1 devuelve 12.00 aunque.
    • «Esto va a ignorar, incluso los formatos de» no es cierto. podría mostrar un comportamiento diferente pero no ignorará todos los formatos. Por ejemplo: si escribe un número (123) en una celda con formato de fecha, se llega a la fecha (no la cantidad) con ambas opciones (.Y de texto .Valor).
    • Que es lo que yo digo. Se obtendrá el valor mostrado de todo, con .Text.
    • ?! Tal vez no me explique el punto correctamente: si tipo de 222 en una celda con formato de fecha (mm/dd/aaaa) y no tener en cuenta el formato, usted debe obtener 222. Lo que he dicho es que en el caso de que usted podría conseguir el mismo con .Valor de y .El texto, que es, la fecha correspondiente: 1/1/1999 (fecha al azar), no la realidad-valor de entrada (222). Por lo tanto, su declaración de que «Esto va a ignorar, incluso los formatos» está mal. En cualquier caso, esta respuesta es claramente no abordar el problema aquí: .Valor de salida todo perfectamente bajo las condiciones descritas en el OP.
    • Tal vez «ignorar» no era la palabra correcta. Obviamente quise decir (incluso hay un ejemplo!) de que usted obtenga los valores de muestra, siendo por tanto totalmente una posible solución para el problema, ya que iba a recibir a un valor diferente del que se muestra.
    • A partir de su declaración entiendo que la diferencia entre .Y de texto .Valor es que el primero ignora los formatos, lo que no es cierto. Si usted considera que esto no es lo que se transmite en esta frase, simplemente no la cambio. PERO su respuesta no abordar el problema. No hay un solo escenario donde durante dos valores numéricos (2003 y 12.00) .Valor ofrece algo completamente apagado (0) y .Texto no. Puede haber algunos problemas con el redondeados + formato, pero esto no es lo que de 2003 a cero significaba. El problema fue claramente en algún otro lugar.
    • ¡De ninguna manera! Que en total podría ser un buen intento para resolver un posible problema en ese escenario. No sabemos todas las cosas que están sucediendo en la hoja (como sucedió con un problema que no se presenta). Yo no sé ni a los formatos utilizados en las células en el momento de publicar la respuesta.
    • Usted es libre de pensar que puede detener las guerras con su sonrisa. Y en serio te ser muy agradable ver a este trabajo. Pero la realidad es que sus posibilidades de lograr una cosa están por debajo de los 10 a la potencia de -9999999999. .Valor de y .Texto entregar la misma cosa. Si el formato de la celda tiene cierta configuración de decimales .Texto podrían pasar por alto. No hay ninguna configuración de decimales, redondeo, tipos numéricos (integer, double, float, etc.), nada permite a un error del 2003 con 0. La única opción que tendría que conseguir un resultado diferente por el uso .O de texto .Valor en un escenario…
    • … serían las mismas posibilidades de dejar de la mencionada guerra con su sonrisa (uno de los componentes electrónicos de la computadora falla en situaciones muy específicas de hacer tal situación posible). Con la información suministrada (2003 a 0) y sin saber nada más, no hay ninguna (sensible, probables y esperable) forma en que .Texto de ofrecer algo diferente .Valor. Si el valor que da de 0, .El texto ha de entregar a 0. En cualquier caso, si hubiera necesitado más información sobre el formato (para ser completa y absolutamente seguro) que debería haber preguntado.
    • Pero esto es sólo mi opinión (de forma equivalente a «de Esta forma se ignora incluso los formatos» debe ser eliminado para evitar malentendidos) siéntase libre de seguir pensando en su camino.
    • Cálmate! Todos a su (nuestro) comentarios deben eliminarse, ya que no estás provinding algo útil y sólo hablar con tu opinión. Y usted no tiene ninguna necesidad de ser tan grosero y ridiculize mi respuesta y mi opinión. Im extracción de esto más adelante.
    • Ridiculize? Descortés? Yo sólo he sido un apasionado (y gracioso) en mi argumentación estoy completamente relajado. Por qué no estoy aportando nada útil? Usted está diciendo que tiene sentido y estoy justificando por qué no. La lógica de salida a partir de esta conversación habría que aceptar que su respuesta las necesidades de algunos de teawking para evitar malentendidos. Mantener la defensa que fue motivado, sigo defendiendo que no era. No veo la grosería. Algunas personas (muy pocas de nuestro país) considera que discutir abiertamente acerca de las cosas que es grosero. No creo que en este camino.
    • Ver la conversación con el OP de inspiración respecto a lo que considero más normal: el OP hizo un error y en lugar de pasar el tiempo con la intención de llegar con un loco justificación explicando que él en realidad no incurrir en ninguna equivocación (no estoy diciendo que lo están haciendo; sólo que, en estas condiciones, este habría sido el comportamiento de muchos de nuestros paisanos), él sólo dijo: «mi mal, lo siento». No hay problema. Final de la situación. Me sugiere algo, te lo puedes llevar a bordo o no (fin). Pero decidió mantener la intención de demostrar que era lógico… no tiene fin (ni la grosería).
    • No es este el lugar para discutir sus opiniones
    • Con respecto a nuestros paisanos? Este es sólo un medio-jokish de referencia (cada vez que hablo en general es medio broma). He estado discutiendo acerca de su código y últimamente acerca de su actitud. No creo que una persona no querer obtener cualquier tipo de información y centrarse en lo que él (ella… no estoy seguro) dijo/hizo fue correcto, no importa lo que es algo que es irrelevante para ASÍ. En cualquier caso, el punto entero de continuar es dejar claro (para los lectores futuros) que no hay ninguna diferencia entre .Valor de y .Texto (nadie relevante en estas condiciones). Consulte esta en su respuesta y va a eliminar todos los comentarios.

Dejar respuesta

Please enter your comment!
Please enter your name here