VBA Excel: página web y QueryTable

Resuelto

Hola,
El siguiente fragmento de código
        ' Copiar la página web en "Hoja2"
        Sheets("Hoja2").Select
        Cells.Clear
        ' agregar una QueryTable
        Set QT = ActiveSheet.QueryTables.Add(Connection:="URL;" & URL, 
       Destination:=Range("A1"))
        ' configurar la QueryTable...
        With QT
        .WebSelectionType = xlEntirePage '... para seleccionar toda la página
        .Refresh BackgroundQuery:=False  '... para actualizar los datos y pegarlos en la hoja
        End With
        ' liberar el objeto QueryTable
        Set QT = Nothing
......

copia una página web completa en la Hoja2 desde A1 y funciona de manera satisfactoria para mis necesidades. Sin embargo, algunas áreas de la página web contienen indicaciones del tipo 1-14 (por ejemplo) y se importan en las celdas de Excel como una fecha del tipo ene-14 ... ¿Es posible evitar este inconveniente y recuperar 1-14?
 


Windows / Chrome 124.0.0.0


1 respuesta

  1. Colaborador

    hola,

    Puedes ver que tienes el mismo comportamiento si escribes "1-14" manualmente en una celda.

    Para evitar que Excel interprete los datos, primero hay que configurar las celdas en formato "Texto".

     Cells.Clear Cells.NumberFormat = "@" 
    1
    1. Colaborador

      También podrías haber probado, simplemente, asignando un valor así:

       Cells.Clear [a5] = "1-14" Cells.NumberFormat = "@" [a6] = "1-14" 

      Te habrías dado cuenta de que no tenía nada que ver con el hecho de que la fuente sea una página web.

      0
    2. ¡Gracias por tu respuesta!
      1) Si pongo las celdas en formato texto antes del set Qt, no cambia nada.
      2) Si lo hago después, el ene-14 se transforma, por supuesto, en 41640... ¿No existe algún parámetro de configuración de QT?

      0
    3. Colaborador
      @mikel831

      Creo que hay un parámetro que permite preservar el formato de las celdas.

      Sería más bien un parámetro accesible a través de la destinación, no a través de la conexión.

      Te sugiero que lo pruebes manualmente para encontrar este parámetro, y luego lo automatices si es necesario (el VBA podría simplemente usar un parámetro existente).

      https://stackoverflow.com/questions/56678825/formating-change-in-excel-when-refresh-data-source-connectred-with-sql-server

      0
    4. Colaborador
      @mikel831

      Quizás, simplemente,

       With QT .WebSelectionType = xlEntirePage '... para seleccionar toda la página .PreserveFormatting = True .Refresh BackgroundQuery:=False 
      0
    5. @yg_be

      He intentado tu respuesta <5: no cambia nada...
      Si hay una forma a través de VBA de conocer el formato de una celda, quizás pueda intentarlo, si es una fecha en la forma ene-14, reconstruir el texto 1-14?

      0