2017-05-02 2 views
1

Ich habe ein Skript erstellt, um meinen Workflow zu unterstützen, und habe Probleme mit FIND und Excel. Der Code, den ich zusammenstellte, funktionierte für kurze Zeit und ich sehe nicht, was mit ihm passiert ist oder warum es nicht mehr funktioniert.Applescript Suchen und Entfernen in Excel

Mein Problem ist dies ... Ich habe eine Excel-Liste von Bilddaten wie Dateiname und Shoot-Name. Ich suche, dass das Skript die Spalte Name des Eintrags durchsucht und nach übereinstimmenden Namen in der Spalte Dateiname sucht und dann diese Zeile vollständig entfernt. Wiederholen Sie diese Aktion, um fortzufahren, bis alle Zeilen überprüft wurden.

EX. 
Filename Shoot Name 
ABC  DOS 
DEF  OXL 
GHI  DEF 
JKL  ASC 

SO .. In diesem Fall sollte die gesamte DEF-Zeile entfernt werden, da sie in der Shoot-Name-Spalte angezeigt wird. Unten ist der Code, den ich aktiv verwende und Spalte D ist mein Shoot-Name und Spalte B ist mein Dateiname.

tell application "Microsoft Excel" 
    activate 
    repeat 

     set checkShootName to get value of cell ("D" & RowNo) 
     if checkShootName ≠ "" then 
      set ShootName to value of cell ("D" & RowNo) as string 
      set searchRange to range ("B:B") 
      set foundRange to find searchRange what ShootName 
      set fRow to first row index of foundRange 
      set myData to value of range ("B" & fRow as text) 


      delete entire row of cell ("B" & fRow) 

      set endCount to 0 

     else 
      set endCount to endCount + 1 
      if endCount > 100 then 
       exit repeat 
      end if 
     end if 
     set RowNo to RowNo + 1 
    end repeat 
end tell 

Gerade jetzt, wenn ich es das Skript ausgeführt hält auf „gesetzt foundRange searchRange was ShootName zu finden“ stecken zu bleiben mit dem Fehler „Fehler‚Microsoft Excel erhielt einen Fehler:. Parameterfehler‘Nummer -50“.

Ich bin neueren Code, aber wenn jemand mich in die richtige Richtung zeigen oder Alternativen vorschlagen könnte, wäre toll!

Antwort

0

Ich denke, das Problem ist, wenn "finden" keine Zellen findet. Es erzeugt einen Fehler. Sie können es in einem try/Ende Try-Block als Gebrüll Griff:

try 
    set foundRange to find searchRange what Shootname 
    set fRow to first row index of foundRange 
on error -- nothing found  
    set fRow to 0 
end try 

Für die nächsten Schritte, wenn Frow nicht 0, Zeile gefunden wird und kann gelöscht werden, wenn Frow 0 ist, dann fand Zeile nicht.

+0

Danke pbell! Das und ein wenig Feinschliff an meinem Ende scheint die Lösung zu sein, die ich brauche! –

Verwandte Themen