Applescript: automatizza Excel per convertire .xls in .csv

4

Sto cercando di convertire in batch una cartella di file .xls in .csv usando Applescript per MS Excel V15.15. Sto usando un campione che ho trovato online per modellarlo:

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

Questo è lo script che fallisce in modo coerente, anche se sembra più simile al modello:

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

Ho anche provato:

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: Quest'ultimo script, benché completo, non risulta in un vero file csv, come quando lo apro con BBEdit mostra codice, non il contenuto del file.

Ho anche provato a impostare cv_folder senza usare "as String". Qualche idea per cui questo fallisce? Non sembra gradire la sintassi "salva cartella di lavoro come nome file formato file CSV in formato file output".

    
posta Gordon 05.11.2015 - 21:25
fonte

2 risposte

1

Sembra che l'errore Parametro sia dovuto a modifiche con Office 2016 per Mac.

link

Da quello che ho imparato da quel thread, Excel V15 può solo scrivere automaticamente (attivato da AppleScript) all'interno del percorso ~ / Library / Containers / com.microsoft.excel /. Sembra che dovrò o ripristinare la versione precedente di Excel, o magari scrivere i file in quella cartella e quindi copiare nella posizione desiderata. Che PITA.

    
risposta data 12.11.2015 - 17:47
fonte
4

Per Excel V15 , utilizza un percorso posix, come questo:

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

Modifica 1 -

Ci provo su V15.15 e V15.16 , è un bug quando la cartella di destinazione non contiene un file Excel aperto di recente. Quindi usalo

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

Modifica 2 -

O crea un file vuoto come questo

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

Modifica 3 : avevo un'altra idea, sarebbe lo script più semplice.

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
    
risposta data 11.11.2015 - 07:27
fonte

Leggi altre domande sui tag