Macro de excel
Buenas Mi pregunta es la siguiente, tengo una hoja de calculo y quiero exportar las casillas del libro 4 qi957 hasta qi965 a un txt en c:/condiciones/ con el nombre de archivo que esta en la casilla qi956. ¿Es posible hacerlo?, en caso afirmativo ¿cómo seria? Pues creo que es con un macro y no tengo ni idea de visual basic. Gracias
1 respuesta
Respuesta de Enrique Bernal
1
1
Esta macro tendrías que asignarla a un botón dentro de la hoja en la que esta la info que necesitas exportar:
Sub Exp_TXT()
Sheets("libro 4").select
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
Sub Exp_TXT()
Sheets("libro 4").select
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
Gracias por tu respuesta, pero tengo un problema añadido, me copia las fórmulas, y al pegarlas me cambia los resultados, ¿no se puede pegar valores? Es que según las opciones que yo elija en la tabla pues tiene unos valores de salida u otros. Otra cosa es lo del nombre del archivo, ¿no puede coger el nombre de una casilla del excel?
Prueba con estos cambios y me avisas, claro el nombre del libro debe estar escrito en la celda A1, pero tu lo puedes cambiar a la celda que quieras
Sub Exp_TXT()
a= Range("A1").value
Sheets(a).select
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
No olvides finalizar la pregunta
Sub Exp_TXT()
a= Range("A1").value
Sheets(a).select
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Sabe
ActiveWindow. Close
End Sub
No olvides finalizar la pregunta
Sigo dándote la lata...
Bueno, las dos primeras instrucciones no funcionan
a=Range("A1"). value
Sheets(a).select
Al depurar me marca la segunda como error 9 en tiempo de ejecución, subíndice fuera de intervalo.
Quitando estas dos lineas me crea el txt, pero los datos los pone entre comillas y eso hace que no los reconozca el programa al que van los txt, ¿se puede resolver este tema?
Bueno, las dos primeras instrucciones no funcionan
a=Range("A1"). value
Sheets(a).select
Al depurar me marca la segunda como error 9 en tiempo de ejecución, subíndice fuera de intervalo.
Quitando estas dos lineas me crea el txt, pero los datos los pone entre comillas y eso hace que no los reconozca el programa al que van los txt, ¿se puede resolver este tema?
Mi error en el tema del nombre del archivo, esta sería la macro, pero no olvides de escirbir el nombre completo del libro, es decir con su terminología ejm "mi libro.xlsx"
Sub Exp_TXT()
a = Range("A1").Value
Windows(a).Activate
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Save
ActiveWindow. Close
End Sub
Sub Exp_TXT()
a = Range("A1").Value
Windows(a).Activate
Range("QI957:QI965").Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.SaveAs Filename:= _
"C:\Newbook.txt", FileFormat:= _
xlText, CreateBackup:=False
ActiveWorkbook. Save
ActiveWindow. Close
End Sub
Lamento darte tanto la lata, pero me sale el mismo error con Windows que con Sheets, he puesto en la casilla A1 el nombre de archivo con la terminación xlsx, con comillas, sin comillas y nada siempre se para en el mismo sitio, aparte de eso me genera el txt pero los valores los pone entre comillas, ¿se pueden quitar esas comillas?
No se porque te pone las comillas porque yo lo probé y funciona bien, ahora lo de la terminología no siempre va a ser xlsx, eso fue para mi ejemplo, tu debes ver tu archivo que terminología tiene.
Sobre las comillas se me ocurre que sea algún tema de formato dentro de tu compu
Comentame sobre el nombre y luego vemos lo de tus comillas,
Pero de cajón te pregunto, manualmente le puedes quitar las comillas.
Si lo puedes hacer ¿Cómo lo haces manualmente?
Sobre las comillas se me ocurre que sea algún tema de formato dentro de tu compu
Comentame sobre el nombre y luego vemos lo de tus comillas,
Pero de cajón te pregunto, manualmente le puedes quitar las comillas.
Si lo puedes hacer ¿Cómo lo haces manualmente?
Vamos aver, tengo office 2010 asi que la terminologia de mis archivos es xlsx.Los datos que quiero importar salen de otra hoja del mismo excel y los creo con concatenar asi que puedo modificar concatenar para que el resultado me salga con comillas o no, la pagina de los datos a exportar simplemente son referencias a las casillas de otras hojas para agruparlas y tenerlas en orden (=`hoja1`¡ab214). Al usar concatenar excel le da formato texto automaticamente creo. Te entendi que en la casila A1 tenia que estar el nombre del xlsx que se va a crear para exportar y que se usara para el nombre del archivo a exportar, como me pusiste en la respuesta "mi libro.xlsx" pues concatene en la hoja anterior para que apareciera con las comillas y la terminacion, pero sigue dandome error. ojala pudiera mandarter el libro para que lo vieras y crearas la macro sobre el. Gracias por tu tiempo
En la casilla del A1 no va el archivo que se va a crear, el nombre del archivo a crear en mi ejemplo es "Newbook.txt", el nombre de la celda en A1 esta para el archivo que contiene la info a ser exportada.
Mi correo es [email protected]
Mi correo es [email protected]
Por alguna razón al bajar tu archivo me aparece error, voy a revisar mi máquina porque creo que es el rar el que me esta dando problemas, si puedes envía los archivos desde excel y no comprimidos.
Porfas trata de mostrarte conectado por las noches que es cuando yo me siento en la maquina y así te puedo ayudar. Ya quiero dar por terminada esta pregunta
Poir cierto puso unos cuadros de dialotgo para que puedas indicar desde que columna quieres que se inicie la copia y para saber el número de columnas que deseas exportar. Por ejemplo si vas a exportar de A hasta C el número de columnas sería 3
Sub crea()
A = InputBox("Indique el número la primera columna que desea exportar, si es A será 1, si es B será 2 y así sucesivamente", "Columna a Exportar")
B = InputBox("Indique el número de columnas que desea exportar", "N. Columnas")
Sheets("CPM-1").Select
a = a - 1
For i = 1 To b
a = a + 1
c = Cells(16, a).Value
Cells(17, a).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\" & c & ".txt", FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Sabe
ActiveWindow.Close
Next i
End Sub
Dime si las comillas las puedes quitar manualmente. Y como lo harías
Sub crea()
A = InputBox("Indique el número la primera columna que desea exportar, si es A será 1, si es B será 2 y así sucesivamente", "Columna a Exportar")
B = InputBox("Indique el número de columnas que desea exportar", "N. Columnas")
Sheets("CPM-1").Select
a = a - 1
For i = 1 To b
a = a + 1
c = Cells(16, a).Value
Cells(17, a).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Workbooks.Add
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\" & c & ".txt", FileFormat:=xlText, _
CreateBackup:=False
ActiveWorkbook.Sabe
ActiveWindow.Close
Next i
End Sub
Dime si las comillas las puedes quitar manualmente. Y como lo harías
- Compartir respuesta
- Anónimo
ahora mismo