Applescript: automatice Excel para convertir .xls a .csv

4

Estoy tratando de procesar por lotes la conversión de una carpeta de archivos .xls a .csv usando Applescript para MS Excel V15.15. Estoy usando una muestra que encontré en línea para modelarla:

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 constantemente, aunque parece que se parece mucho 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 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

EDIT: Este último script, aunque se completa, no da como resultado un verdadero archivo csv, ya que cuando lo abro con BBEdit se muestra el código, no el contenido del archivo.

También he intentado configurar la carpeta cv sin usar "como cadena". ¿Alguna idea de por qué esto falla? Parece que no le gusta la sintaxis "guardar libro de trabajo como nombre de archivo el formato de archivo CSV del formato de archivo de salida".

    
pregunta Gordon 05.11.2015 - 21:25

2 respuestas

1

Parece que el error del parámetro se debe a cambios con Office 2016 para Mac.

enlace

Por lo que aprendí de ese hilo, Excel V15 solo 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 tal vez escribir los archivos en esa carpeta y luego copiarlos a la ubicación deseada. Qué PITA.

    
respondido por el Gordon 12.11.2015 - 17:47
4

Para Excel V15 , usa una ruta de acceso de 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

Editar 1 -

Lo probé en V15.15 y V15.16 , es un error cuando la carpeta de destino no contiene un archivo de Excel recientemente abierto. Así que úsalo

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

Editar 2 -

O crea 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

Edit 3 : tuve otra idea, sería el script más simple.

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
    
respondido por el jackjr300 11.11.2015 - 07:27

Lea otras preguntas en las etiquetas