Macros de Excel para exportar a .txt

De favor si me pueden auxiliar tengo un macro en excel que esporta los datos a un archivo de .txt el archivo lo hace genial pero quiero modificarlo para que en ligar de empezar en la A5 empiece en la A30 ya que quiero poner otros datos al principio de la hoja este es el macro que tengo:

Sub carga()

'HASTA DONDE
Lines = Application.WorksheetFunction.CountA(Range("a5:a65536"))
Lines = Lines + 4
'catalogo de valores
For x = 5 To Lines
a = Left(Cells(x, 1), 2) & "|"
b = Left(Cells(x, 2), 2) & "|"
c = Cells(x, 3) & "|"
d = Cells(x, 4) & "|"
E = Cells(x, 5) & "|"
F = Right(Cells(x, 6), 2) & "|"
G = Cells(x, 7) & "|"
H = Cells(x, 8) & "|"
I = Cells(x, 9) & "|"
J = Cells(x, 10) & "|"
K = Cells(x, 11) & "|"
L = Cells(x, 12) & "|"
M = Cells(x, 13) & "|"
N = Cells(x, 14) & "|"
O = Cells(x, 15) & "|"
P = Cells(x, 16) & "|"
Q = Cells(x, 17) & "|"
R = Cells(x, 18) & "|"
S = Cells(x, 19) & "|"
T = Cells(x, 20) & "|"
U = Cells(x, 21) & "|"
V = Cells(x, 22) & "|"

'une datos EMPIEZA EN LA CELDA DE LA z
Cells(x, 26) = a & b & c & d & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V
Next x

'graba en disco
Range(Cells(5, 26), Cells(Lines, 26)).Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
direc = Application.GetSaveAsFilename(InitialFileName:="infoiva", _
fileFilter:="archivos de texto (*.txt), *.txt", Title:="Guardar archivo Carga-Batch Como:")
ActiveWorkbook.SaveAs Filename:= _
direc, FileFormat:= _
xlTextPrinter, CreateBackup:=False
ActiveWindow.Close savechanges:=False
Selection.ClearContents
Range("A5").Select
End Sub

La lógica me indico cambiar los rangos pero algo no hago bien ya que no esta jalando los datos de forma correcta...

1 respuesta

Respuesta
1

Si he entendido bien, tus datos ahora estarán en A30:Z...

Si es así, además del conteo en la línea:

Lines = Application.WorksheetFunction.CountA(Range("a5:a65536"))

que incluso podría quedarse así, aunque mejor ajustarlo por:

Lines = Application.WorksheetFunction.CountA(Range("a30:a65536"))

la clave estaría en cambiar el inicio del Loop: FOR... NEXT:

Lines = Lines + 29
'catalogo de valores
For x = 30 To Lines

Finalmente ajustarías el rango a copiar hacia el libro nuevo:

'graba en disco
Range(Cells(5, 26), Cells(Lines, 26)).Select
'cambiado por
'graba en disco
Range(Cells(30, 26), Cells(Lines, 26)).Select

Espero te resulte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas