Necesito ayuda para crear distintos archivos de texto de cada fila en una hoja de cálculo de excel llamado «hoja de cálculo». Quiero que los archivos de texto para ser nombrado con el contenido de la Columna, con las columnas B-G siendo el contenido, preferentemente con un doble retorno entre cada columna en el archivo de texto, de modo que cada columna tendrá una línea en blanco entre ellos.

Es esto posible? Cómo iba yo a ir sobre ella. gracias!

  • En qué idioma desea lograr esto?
InformationsquelleAutor user1775582 | 2012-10-25

4 Comentarios

  1. 2

    @tipo nutch la respuesta está perfectamente bien y debería funcionar el 99,9% del tiempo. En las raras ocasiones en que FSO no está disponible, he aquí una versión que no tienen una dependencia. Como es, se requiere que la fuente de hoja de cálculo no tiene ningún filas en blanco en la sección de contenido.

    Sub SaveRowsAsCSV()
    
    Dim wb As Excel.Workbook, wbNew As Excel.Workbook
    Dim wsSource As Excel.Worksheet, wsTemp As Excel.Worksheet
    Dim r As Long, c As Long
    
        Set wsSource = ThisWorkbook.Worksheets("worksheet")
    
        Application.DisplayAlerts = False 'will overwrite existing files without asking
    
        r = 1
        Do Until Len(Trim(wsSource.Cells(r, 1).Value)) = 0
            ThisWorkbook.Worksheets.Add ThisWorkbook.Worksheets(1)
            Set wsTemp = ThisWorkbook.Worksheets(1)
    
            For c = 2 To 7
                wsTemp.Cells((c - 1) * 2 - 1, 1).Value = wsSource.Cells(r, c).Value
            Next c
    
            wsTemp.Move
            Set wbNew = ActiveWorkbook
            Set wsTemp = wbNew.Worksheets(1)
            'wbNew.SaveAs wsSource.Cells(r, 1).Value & ".csv", xlCSV 'old way
            wbNew.SaveAs "textfile" & r & ".csv", xlCSV 'new way
            'you can try other file formats listed at http://msdn.microsoft.com/en-us/library/office/aa194915(v=office.10).aspx
            wbNew.Close
            ThisWorkbook.Activate
            r = r + 1
        Loop
    
        Application.DisplayAlerts = True
    
    End Sub
    
    • Me estoy haciendo un «400» error . . . Tengo un par de celdas que están en blanco en el contenido . . . no sé si esto podría ser la causa.
    • La macro se detiene cuando encuentra una celda en blanco en la columna a (porque entonces el nombre de archivo está en blanco, según sus instrucciones). Nunca he encontrado un error 400, sólo me miró. Es posible que algunos de esos «blanco» de las células que contienen en realidad una cadena de espacios? También, ¿qué versión de Excel se utiliza?
    • estoy ejecutando excel 2010
    • Extraño, he probado en 2010, sin problemas. Hace la macro escribir archivos de texto antes de que el error? He editado la línea de partida con Hacer Hasta que, por favor intente la macro con la nueva línea.
    • Yo todavía estoy recibiendo el mismo «400» error. yo veo «trabajando» en la creación de hojas de cálculo para cada archivo de texto por segundo. La hoja de cálculo a la izquierda se abre después de la «400» el error es la 2ª fila que contiene el texto en las columnas a-G. Ahora estoy pensando que la causa del problema podría nombrar por el contenido de la primera columna . . . ¿y si el nombre de los archivos de texto por números secuenciales? gracias!
    • He hecho algunas pequeñas modificaciones para crear una referencia específica al nuevo libro, no se si será de ayuda. Puedes publicar las primeras células en la Columna a? Son aceptados como válidos los nombres de archivo?
    • No creo que los títulos son aceptables . . . en el pensamiento . . . el texto en los cuadros es la forma larga para los nombres de archivo
    • Re-editado para el uso secuencial de los nombres de archivo. Tenga en mente que el texto en la Columna a está siendo ignorado… tu pregunta dice que el contenido de los archivos, en las columnas B a G.
    • Impresionante . . . que trabajado. Se detuvo cuando llegó mi primera entrada sin contenido en la columna A. funcionó bien en las filas sin info en otras columnas. Ahora sólo tengo que añadir un poco de texto para aquellas entradas que faltan en la columna a y debo estar a las carreras. Gracias!
    • Estoy recibiendo un «Subíndice fuera del intervalo de error»… el uso de Excel para Mac 2011. Los pensamientos? Estoy tratando de hacer exactamente lo que el OP es – nombre de la Columna a (sin filas en blanco) y el contenido de las Columnas B-G.

  2. 3

    La adjunta de la macro de VBA va a hacer, el ahorro de los archivos txt en C:\Temp\

    Sub WriteTotxt()
    
    Const forReading = 1, forAppending = 3, fsoForWriting = 2
    Dim fs, objTextStream, sText As String
    Dim lLastRow As Long, lRowLoop As Long, lLastCol As Long, lColLoop As Long
    
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    For lRowLoop = 1 To lLastRow
    
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set objTextStream = fs.opentextfile("c:\temp\" & Cells(lRowLoop, 1) & ".txt", fsoForWriting, True)
    
        sText = ""
    
        For lColLoop = 1 To 7
            sText = sText & Cells(lRowLoop, lColLoop) & Chr(10) & Chr(10)
        Next lColLoop
    
        objTextStream.writeline (Left(sText, Len(sText) - 1))
    
    
        objTextStream.Close
        Set objTextStream = Nothing
        Set fs = Nothing
    
    Next lRowLoop
    
    End Sub
    
    • Gracias por su ayuda. Yo podría haber hecho algo mal, pero me estoy haciendo un «sin error». Alguna idea?
    • Estoy recibiendo un error que dice «el componente ActiveX no puede crear objetos»
  3. 2

    Para el beneficio de otros, según el problema. He sustituido «Chr(10) & Chr(10)» con «Chr(13) & Chr(10)» y funcionó perfectamente.

  4. 2

    He utilizado el código de abajo para guardar mis filas de excel como un archivo de texto o muchos otros de formato durante bastante tiempo ahora y siempre ha funcionado para mí.

    Sub savemyrowsastext()

    Dim x

    Para Cada celda En la Hoja1.Range(«A1:a» & Hoja1.UsedRange.Las filas.Count)

    ‘usted puede cambiar la hoja1 a su propia elección

    saveText = celda.Texto

    Abrir «C:\wamp\www\GeoPC_NG\sogistate\igala_land\» & saveText & «.php» For Output as #1

    Print #1, la celda.Offset(0, 1).Texto

    Close #1

    Para x = 1 A 3 de » Loop 3 veces.

    Beep Sonido de un tono.

    El próximo x

    Siguiente celda

    End Sub

    Nota:

    1. Columna A1 = título del archivo

    2. columna B1 = archivo de contenido

    3. Hasta la última fila que contiene el texto (es decir, las filas vacías)

    en orden inverso, si quieres hacer algo como esto;

    1. Columna A1 = título del archivo

    2. columna A2 = archivo de contenido

    3. Hasta la última fila que contiene el texto (es decir, las filas vacías), acaba de cambiar Print #1, la celda.Offset(0, 1).Texto a Print #1, la celda.Offset(1, 0).Texto

    Mi carpeta de ubicación = C:\wamp\www\GeoPC_NG\kogistate\igala_land\

    A mi la extensión de archivo = .php, usted puede cambiar la extensión de su propia elección (.txt, .htm & .csv, etc)
    He incluido bip sonido al final de cada ahorrando para saber si mi trabajo está pasando

    Dim x

    Para x = 1 A 3 de » Loop 3 veces.

    Beep Sonido de un tono.

    • Gracias, esto hizo que el trabajo con un pequeño cambio: Print #1, la celda.Offset(0, 1).Valor2 lugar de Impresión #1, la celda.Offset(0, 1).Texto. Parece que .El texto sólo se imprime la primera 1025 carácter en lugar de la totalidad del texto
    • Proyecto, Pero lo que si desea incluir todos los de la columna de la columna B > adelante, como el contenido en el archivo de texto? ¿Dónde puedo cambiar esa variable?

Dejar respuesta

Please enter your comment!
Please enter your name here