hilfdirselbst.ch
Facebook Twitter gamper-media
Mac OS X enthält verschiedene integrierte Werkzeuge und Technologien, mit denen sich gängige Aufgaben schnell und einfach automatisieren lassen.
Hans Haesler  M  p
Beiträge: 5492
2. Okt 2003, 16:32
Beitrag #1 von 1
Bewertung:
(1085 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Excel-Zellen adressieren


Die folgenden Bemerkungen gelten nur für "Microsoft Excel 2001".

Je nach gewählter Darstellungs-Art sind die Reihen mit Ziffern und die Kolonnen mit Buchstaben bezeichnet oder beide mit Ziffern. Im zweiten Fall spricht man vom Stil "L1C1", wobei das "L" für "Line" steht (englisch für Reihe) und das "C" für "Column" (englisch für Kolonne).

Man kann diese Methode in den Voreinstellungen ändern. In der Karteikarte "Allgemein" ist eine Checkbox, deren Legende "L1C1" enthält (ich habe nur eine französische Version, deshalb die wenig präzisen Angaben).

Für ein Script spielt es keine Rolle, welche Darstellungsart gewählt ist. Aber ich habe soeben eine Fehlermeldung eingefangen, nachdem ich mit dem Umstellen auf "L1C1" herumgepröbelt habe. Abhilfe: nochmals in die Voreinstellungen. Box (de)aktivieren. OK klicken. Nochmals denselben Dialog anzeigen. Box (de)aktivieren. OK klicken.

Zum Adressieren der Zellen kann man zwei Methoden benutzen (der Buchstabe 'i' ist der Zähler der Wiederholungsschleife):
A) einen Buchstaben für die Kolonne, eine Ziffer für die Reihe = "A1".
Beispiel: Value of Cell ("A" & i)
B) die Buchstaben "L" und "C" = "L1C1"
Beispiel: Value of Cell ("L" & i & "C1")

Mit Methode "A" gibt es einen Konflikt beim Adressieren der Kolonnen "C" und "L". Der Wert wird als '0' zurückgegeben (d.h. eine leere Zelle). Deshalb: lieber die kompliziertere Formel der Methode "B" verwenden.

Ein einfaches Beispiel:
---
tell application "Microsoft Excel"
  tell document 1
    tell Worksheet 1
      repeat with i from 2 to 4
        set infoList to {}
        set tmpVal to Value of Cell ("L" & i & "C1")
        set end of infoList to tmpVal & tab
        set tmpVal to Value of Cell ("L" & i & "C2")
        set end of infoList to tmpVal & tab
      end repeat
    end tell
  end tell
end tell
infoList
Code
Wenn der Zelleninhalt nicht vom Typ "string" ist, dann erhält man eine Liste in der Liste. Dies ist aber kein Problem. Beim Umwandeln in ein Textkette wird sie automatisch aufgelöst. Wenn allerdings ein Wert wie eine Ganzzahl aussieht, dann muss er auf jeden Fall in eine solche (= integer) verwandelt werden. Sonst wird beim Ergebnis ein Dezimal-Separator und eine Null als Nach-Komma-Stelle eingefügt. Auch wenn das Format der Zelle als Ganzzahl definiert ist. Man kann gleichzeitig den Wert in einen String umwandeln. 

set tmpVal to (Value of Cell ("L" & i & "C3") as integer) as string
---

Übrigens: das Exportieren per Script macht nur Sinn, wenn die Reihenfolge der Zelleninhalte umgestellt werden muss und/oder  Zeichenstilvorlagen-Tags eingefügt werden müssen. Sonst kann man das Dokument ganz einfach als Tab-delimitierte Datei sichern (oder ein Kopieren/Einsetzen durchführen).

Wie die zusammengetragenen Informationen mit Tags versehen werden können, wie man die Liste in eine Textkette umwandelt und in eine Datei schreibt, wird in einer weiteren Folge gezeigt.

Hans Haesler <hsa@ringier.ch> Top
 
X