Как перебрать все строки в Excel с помощью Applescript?

Я пытаюсь перебрать все строки в Excel и запустить какую-то команду в каждой строке, но я не могу понять, как!

Сначала я попытался сделать это в rb-appscript (оболочке Ruby для AppleScript), но решил, что лучше будет сначала попытаться заставить его работать в Applescript, прежде чем добавлять еще один DSL. Какие-нибудь советы? (версия rb-appscript тоже подойдет, хотя и не обязательна).

Спасибо!

1 ответ

Решение

Координаты диапазона - это строка, которую вы можете создавать динамически. Самый простой способ перебрать ваши строки будет примерно так:

repeat with thisRow from 1 to 10
    tell application "Microsoft Excel"
        set theRange to "A:" & thisRow & "Z:" & thisRow
        set theValue to (get value of range theRange) as list
        -- do something with the row's data
    end tell
end repeat

Обновление по комментариям: Чтобы получить количество строк, требующих вычисления, я написал подпрограмму давным-давно, чтобы помочь с этим. Убедитесь, что у вас есть какой-то "ключевой" столбец, который постоянно заполнен (другими словами, пропущенные ячейки отсутствуют). Это в настоящее время учитывает строку заголовка, так как все мои электронные таблицы имеют их:

on GetItemCount(KeyColumn)
    set RowNumber to 1
    set theText to "cSyoyodylg" -- dummy value
    tell application "Microsoft Excel"
        repeat until theText is ""
            set RowNumber to RowNumber + 1
            set theRange to KeyColumn & RowNumber & ":" & KeyColumn & RowNumber
            set dataRange to range theRange of sheet 1
            set theText to (get value of range theRange)
        end repeat
    end tell
    set rowCount to RowNumber - 1
    return rowCount
end GetItemCount

Чтобы использовать, просто сделайте это: установите lastRow в GetItemCount("A") из меня

repeat with thisRow from 2 to lastRow + 1
    -- go attack Excel
end repeat
Другие вопросы по тегам