0

私は約400のExcelファイルを持っています。既存のファイルの最初の列の直前に列を挿入してから、その列の各行にファイルの名前を挿入したいと思います。

私はApplescriptについて少し知っていますが、それに基づいてこのスクリプトを作成しました。これにより、いくつかのファイルをスクリプトにドロップして、それらの各ファイルでスクリプトを実行できます。

誰かが「TODO」の行を完成させるのを手伝ってくれるかどうか疑問に思いました。このスクリプトを実行すると、一番上にドロップしたファイルのパスを示すダイアログボックスが表示されます。しかし、Excelアプリケーションは、「メモリが不足しています」というエラーダイアログボックスをスローします。2つのExcelファイルだけでこれを試したので、エラーの原因となったのはファイルの数ではありませんでした。

誰かがTODO行を完成させるために私に手を差し伸べて、Imがエラーを受け取る理由についてのアイデアを教えてもらえますか?ありがとう

property numFiles : 0

on open excelFiles


set fileNames to ""

tell application "Finder"
    repeat with eachFile in excelFiles

        --open document file eachFile

        --tell application "Microsoft Excel"

        --increment count



        --save name of each file

        set fileNames to fileNames & return & (POSIX path of eachFile)

        --TO DO insert a column

        --TO DO insert text in each column to the name of eachFile

        --end tell
    end repeat
    display dialog fileNames
    --display dialog "Ouch that hurt " & return & "You dropped " & (count excelFiles) & "files on me"
end tell
end open

on addFilePath(eachFile)
set fileNames to fileNames & (POSIX path of eachFile)
end addFilePath

どうもありがとう

4

1 に答える 1

1

私はすべてを理解していません->その列の各行にファイルの名前を挿入します| TO DOは、各列の各ファイルの名前にテキストを挿入します。

これがスクリプトです、更新されました:

    on open excelFiles
    set numFiles to count excelFiles
    repeat with eachFile in excelFiles -- open each file in Excel
        tell application "Microsoft Excel"
            set tBook to open workbook workbook file name (eachFile as string)
            set tName to name of tBook
            insert into range column 1 of active sheet -- insert column

            set lastCell to last cell of used range of active sheet -- get last cell from the used range
            set value of range ("A1:A" & first row index of lastCell) of active sheet to tName --set first column's values to the file name

            close tBook saving yes
        end tell
    end repeat
    display dialog numFiles
end open

編集:私はエラーを忘れました:

十分なメモリがありません:この奇妙なエラーは次のようです:でmyまたはtell me to)を使用せずにハンドラーを呼び出しますtell block application

私のように使用してください:set x to my addFilePath(eachFile)

また、 tell application "Microsoft Excel"ブロック内の application Finderブロックは推奨されません。これにより、予期しないエラーが発生する可能性があります。

于 2012-07-18T14:49:39.703 に答える