/ / AppleScript Compter et supprimer des caractères dans Excel - Excel, Count, Applescript

AppleScript Compter et supprimer des caractères dans Excel - Excel, Count, Applescript

J'ai des problèmes avec mon manuscrit quisupprime tout nom de fichier de plus de 13 caractères. J'ai une liste de noms de fichiers dans la colonne B et j'ai seulement besoin de ceux qui sont 13 caractères, rien de plus que. Je cherche le script pour supprimer la ligne de plus de 13. Jusqu'à présent, cela a fonctionné quelque peu, mais sans les supprimer tous.

        tell application "Microsoft Excel"
activate
open (choose file with prompt "Select the Excel file you wish to use.")
end tell


tell application "Microsoft Excel"
tell active sheet
autofit column "A:H"
end tell
end tell

set cellNumber to 2

tell application "Microsoft Excel"
activate
repeat
set fileName to get value of cell ("B" & cellNumber) as string
set fncount to count characters of fileName
if fncount is greater than 13 then
delete entire row of cell ("B" & cellNumber)
set endCount to 0
else
set endCount to endCount + 1
if endCount > 100 then
exit repeat
end if
end if
set cellNumber to cellNumber + 1
end repeat
end tell
set endCount to 0

Réponses:

0 pour la réponse № 1

Cela ne supprime pas tout, car lorsque le script supprime une ligne, Exceller va déplacer les lignes vers le haut.

Exemple: le script supprime la deuxième ligne, maintenant la deuxième ligne est la troisième ligne, de sorte que le script ignore une ligne

Pour éviter cela, la boucle doit commencer à l'index de la dernière ligne.

Utilisez le used range propriété pour obtenir la dernière ligne.

tell application "Microsoft Excel"
activate
open (choose file with prompt "Select the Excel file you wish to use.")
tell active sheet
set cellNumber to 2
autofit column "A:H"
set lastR to count rows of used range -- get the index of the last row which contains a value
repeat with i from lastR to cellNumber by -1 --  iterates backwards from the index of the last row
set fileName to string value of cell ("B" & i)
if (count fileName) > 13 then delete row i
end repeat
end tell
end tell