4 votos

Applescript: Automatizar Excel para convertir .xls a .csv

Estoy intentando convertir por lotes una carpeta de archivos .xls a .csv utilizando Applescript para MS Excel V15.15. Estoy usando un ejemplo que encontré en línea para modelarlo..:

set theOutputPath to (path to desktop folder as string) & "My Saved Workbook.csv"
  tell application "Microsoft Excel"
    tell active workbook
      save workbook as filename theOutputPath file format CSV file format
    end tell
  end tell

Este es el script que falla sistemáticamente, aunque parece que se asemeja más al modelo:

set csv_folder to "Macintosh HD:Users:Me:CSV:" & file_name as string
    tell application "Microsoft Excel"
        open Source_file
        tell active workbook
            save workbook as filename csv_folder file format CSV Mac file format-->
           (*This generates error "Microsoft Excel got an error: Parameter error." number -50 *)
        end tell
    end tell

También lo he intentado:

set csv_folder to "Macintosh HD:Users:Me:CSV:" & file_name & ".csv" as string

tell application "Microsoft Excel"
    open Source_file
        tell active workbook
            save workbook as filename csv_folder -->
           (*This usually generates error "Microsoft Excel got an error:
            Parameter error." number -50 the first time it is run, 
              then works the 2nd time *)
        end tell
end tell

EDITAR: Este último script, aunque se completa no resulta en un verdadero archivo csv, ya que cuando lo abro con BBEdit está mostrando el código, no el contenido del archivo.

También he probado a poner la carpeta cv_folder sin usar "as String". ¿Alguna idea de por qué esto falla? No parece gustarle la sintaxis "guardar libro de trabajo como nombre de archivo theOutputPath formato de archivo CSV".

4voto

Baczek Puntos 150

Para Excel V15 Utiliza una ruta posix, como esta:

set theOutputPath to POSIX path of ((path to desktop folder as string) & "My Saved Workbook.csv")
tell application "Microsoft Excel"
    tell active workbook
        save workbook as filename theOutputPath file format CSV Mac file format with overwrite
    end tell
end tell

Edición 1 -

Lo pruebo en V15.15 y V15.16 Es un error cuando la carpeta de destino no contiene un archivo Excel abierto recientemente. Así que utilícelo

set theOutputPath to POSIX path of ((path to desktop folder as string) & "My Saved Workbook.csv")
set parentFolder to (do shell script "dirname " & quoted form of theOutputPath) as POSIX file -- get the parent folder 

tell application "Microsoft Excel"
    alias parentFolder -- a folder where to save a new file, workaround to a bug when the destination folder doesn't contains a recently opened Excel file
    save workbook as active workbook filename (theOutputPath) file format CSV Mac file format with overwrite
end tell

Edición 2 -

O crear un archivo vacío como este

set theOutputPath to POSIX path of (path to desktop folder as string) & "My Saved Workbook.csv"
do shell script "touch " & quoted form of theOutputPath -- create an empty file
set theOutputPath to theOutputPath as POSIX file
tell application "Microsoft Excel"
    save workbook as active workbook filename (theOutputPath) file format CSV Mac file format with overwrite
end tell

Edición 3 : Tuve otra idea, sería el más simple script.

set theOutputPath to (path to desktop folder as string) & "My Saved Workbook.csv"
tell application "Microsoft Excel"
    alias theOutputPath --  workaround to a bug when the destination folder doesn't contains a recently opened Excel file
    save workbook as active workbook filename theOutputPath file format CSV Mac file format with overwrite
end tell

0 votos

Gracias por la ayuda. El script que has proporcionado sigue devolviendo el mismo error de parámetro para la línea "save workbook as filename theOutputPath file format CSV Mac file format with overwrite". Empiezo a creer que se trata de un cambio en Excel para Mac v15, ya que ninguna de las sintaxis de las opciones de Guardar como [Tipo de archivo] que he encontrado funcionan en Excel 15.

0 votos

He actualizado mi respuesta.

1voto

Gordon Puntos 23

Parece que el error de los parámetros se debe a los cambios con Office 2016 para Mac.

http://preview.alturl.com/f8srb

Por lo que he aprendido de ese hilo Excel V15 sólo puede escribir automáticamente (activado por AppleScript) dentro de la ruta ~/Library/Containers/com.microsoft.excel/. Parece que tendré que volver a la versión anterior de Excel, o quizás escribir los archivos en esa carpeta y luego copiarlos en la ubicación deseada. Qué pega.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X