1 votos

El tamaño del archivo de Excel guardado es demasiado grande VBA

Hola tengo una macro que copie un archivo raw, a continuación, utiliza =INDICE() función para el archivo correspondiente

aquí está mi código

ActiveSheet.Range("N:N").FormulaR1C1 = _
    "=INDEX('" & filename1 & folder & "[" & ffname & "]Accounts'!C11,MATCH(C3,'" & filename1 & folder & "[" & ffname & "]Accounts'!C6,0))"
ActiveSheet.Range("N:N").Select
Selection.Copy
ActiveSheet.Range("J:J").Select
Selection.PasteSpecial Paste:=xlPasteValues
Range("N:N").Select
Selection.Delete

así que no hay nada malo con el código, pero mi problema es que cada vez que el programa se guarda la copia de datos el tamaño del archivo se hace más grande. de 16KB a 2,608 KB

También probé a añadir este código en el programa identificará la última celda de la columna para que coincidan

LastRow = ActiveSheet.Range("C1").CurrentRegion.Rows.Count

hay una manera de solucionar este problema en macro??


por la forma en que esta no es la primera vez que se utiliza =INDICE() función para que coincida con los datos de otro tipo de archivos. el resto estaba bien, pero sólo en este sub Cuenta el tamaño del archivo se hizo más grande que el archivo original

0voto

Stormweaker Puntos 56

Usted está introduciendo la fórmula en toda la columna N (1048576 células si utiliza Excel 2007 o más reciente), es por eso que usted obtiene de un archivo muy grande, un montón de datos inútiles se guarda.

Como un ejemplo, modificaciones a tu macro para insertar ="" en toda la columna de un nuevo libro de los cambios en el archivo de tamaño de 9 KB de 5579KB. Por descomprimir el libro y mirando la hoja .archivo xml se puede ver que cada célula tiene su valor en 0 :

<row r="1" spans="1:1" x14ac:dyDescent="0.2">
    <c r="A1" t="s">
        <v>0</v>
    </c>
</row>

Para resolver este problema se debe reducir el número de filas que de entrada la fórmula. El uso de la LastRow en tu pregunta debería funcionar si los datos contiguos (no hay celdas en blanco).

LastRow = ActiveSheet.Range("C1").CurrentRegion.Rows.Count

0voto

Rajesh S Puntos 11

Haga lo siguiente para resolver su problema:

  1. Compruebe los bytes (tamaño) del archivo original.
  2. Copie y pegue los datos que debe copiar utilizando Macro en un archivo nuevo y obtenga el Byte (Tamaño).
  3. Luego prueba la macro y encuentra la diferencia entre ambos.

  4. Otra posibilidad es que sus datos se hayan rellenado con espacios en blanco innecesarios.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: