Как перебрать все строки в Excel, используя Applescript? - PullRequest
3 голосов
/ 15 августа 2011

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

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

Спасибо!

1 Ответ

2 голосов
/ 15 августа 2011

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...