[GastForen Programmierung/Entwicklung AppleScript Excel -> aus 3 mach 1 + diagramm

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Excel -> aus 3 mach 1 + diagramm

swish
Beiträge gesamt: 75

8. Jul 2005, 08:42
Beitrag # 1 von 6
Bewertung:
(1394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Forum,

ich habe mehrere Tab-getrennte Textdateien. Von diesen soll ein gemeinsames Diagramm erstellt werden.

Wie wird das in Excel gemacht ?

Ich benötige aus jeder TXT die Felder B3-B6 als "Beschreibung" für die jeweilig Kurve im Diagramm. Die Grundwerte (x-Achse) benötige ich nur ein einziges Mal aus der Spalte C (C9 - C54).
Die Werte dann aus der Spalte M (M9 - M54).

Das ganze soll dann in ein Liniendiagramm dargestellt werden.

Einen Hotfolder für die TXTs zu machen ist soweit kein Problem. Die ganze Sache in Excel macht mir nur Probleme. Ich habe zur Auswahl Excel 2001 (OS 9) oder Excel v.X (OS X). Das OS is Tiger.

Schon mal vielen Dank im Voraus!

Stephan
X

Excel -> aus 3 mach 1 + diagramm

Hans Haesler
  
Beiträge gesamt: 5826

8. Jul 2005, 10:30
Beitrag # 2 von 6
Beitrag ID: #419853
Bewertung:
(1393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

wie immer in solchen Fällen stelle ich meine Standardfrage: Würdest Du mir bitte die Textdateien zustellen?
Und ein manuell erstelltes Excel-Diagramm?

Gruss, Hans


als Antwort auf: [#419852]

Excel -> aus 3 mach 1 + diagramm

Hans Haesler
  
Beiträge gesamt: 5826

11. Jul 2005, 12:24
Beitrag # 3 von 6
Beitrag ID: #419854
Bewertung:
(1393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

danke für die Dateien. Ich habe am Freitag einen ersten Versuch gemacht. Das Script öffnet die
Textdatei als Exceldokument, kopiert die richtige Spalte und setzt sie im Diagramm-Dokument ein.

Die entsprechende Kurve wird aber auf Null gesetzt, weil die Werte nicht als Bruchzahlen vorliegen.
So geht es also nicht.

Jetzt habe ich den Dezimalseparatoren meines Systems auf das Komma umgestellt – und schon
funktioniert es. :-).

Ich werde nun versuchen, eine erste Version des Scripts zu entwickeln. Falls ich es nicht vor Ende
der Mittagspause eine brauchbare Lösung schaffe, kann ich sie erst heute Abend fertigstellen.

Gruss, Hans


als Antwort auf: [#419852]

Excel -> aus 3 mach 1 + diagramm

Hans Haesler
  
Beiträge gesamt: 5826

11. Jul 2005, 13:04
Beitrag # 4 von 6
Beitrag ID: #419855
Bewertung:
(1393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

und hier ist die erste Lösung. Das Script fordert den Anwender auf, die Excel-Diagramm-Datei zu lokalisieren.
Der Pfad wird gespeichert und der Dialog wird nicht mehr erscheinen. Dasselbe gilt für den Hotfolder, welcher
die Textdateien enthält.

Dann wird das Excel-Dokument geöffnet, in einer Wiederholungsschleife werden die Textdateien der Reihe nach
geöffnet, die gewünschte Spalte wird kopiert und in das Diagramm-Dokument eingesetzt.
---
property diagrammDoc : ""
property hotFolder : ""
property txtDoc1 : "stephan1.txt"
property txtDoc2 : "stephan2.txt"
property txtDoc3 : "stephan3.txt"

if diagrammDoc = "" then
   with timeout of 300 seconds
      set diagrammDoc to (choose file with prompt "Das Excel-Diagramm-Dokument wählen") as string
   end timeout
else
   try
      diagrammDoc as alias
   on error
      with timeout of 300 seconds
         set diagrammDoc to (choose file with prompt "Das Excel-Diagramm-Dokument wählen") as string
      end timeout
   end try
end if
if hotFolder = "" then
   with timeout of 300 seconds
      set hotFolder to (choose folder with prompt "Den Textdateien-Hotfolder wählen") as string
   end timeout
else
   try
      hotFolder as alias
   on error
      with timeout of 300 seconds
         set hotFolder to (choose folder with prompt "Den Textdateien-Hotfolder wählen") as string
      end timeout
   end try
end if

set pathList to {hotFolder & txtDoc1, hotFolder & txtDoc2, hotFolder & txtDoc3}
set charList to {"C", "D", "E"}
tell application "Microsoft Excel"
   activate
   open (open alias diagrammDoc)
   repeat with i from 1 to 3
      set curRange to item i of charList & "2:" & item i of charList & "47"
      set txtPath to item 1 of pathList
      try
         open text file filename txtPath decimal separator point with tab
         tell active workbook
            tell active sheet
               set columnM to value of every cell of range ("M9:M54")
            end tell
         end tell
         close active workbook saving no
         tell active workbook
            tell active sheet
               set value of every cell of range (curRange) to columnM
            end tell
         end tell
      end try
   end repeat
   display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell

---
Was noch fehlt: Die Plazierung der je drei Legendenzeilen. Würdest Du mir bitte ein Dokument
zustellen, in welchem Du diese Zeilen positionert hast?

Gruss, Hans


als Antwort auf: [#419852]

Excel -> aus 3 mach 1 + diagramm

swish
Beiträge gesamt: 75

18. Jul 2005, 09:55
Beitrag # 5 von 6
Beitrag ID: #419856
Bewertung:
(1393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

ich war im Urlaub und habe erst jetzt wieder ein wenig Zeit hier zu antworten.

Ersteinmal DANKE !

Mit welcher Excel-Version arbeitest Du ? Ich habe das Script mit Excel 2001 und Excel v. X ausprobiert und beide kennen weder "workbook" noch "sheet".

Die erste Meldung nach beim kompilieren ist "Es wurde „Zeilenende“ erwartet, aber ein „Identifier“ wurde gefunden." und es wird der Aufruf "open text file filename txtPath decimal separator point with tab" markiert.

Was ist da los ???

Beste Grüße,

Stephan


als Antwort auf: [#419852]

Excel -> aus 3 mach 1 + diagramm

Hans Haesler
  
Beiträge gesamt: 5826

18. Jul 2005, 11:14
Beitrag # 6 von 6
Beitrag ID: #419857
Bewertung:
(1393 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stephan,

unter Mac OS X habe ich nur die Excel-Version 11.1 aus dem Paket "Microsoft Office 2004"
zur Verfügung. Deshalb wird es schwierig sein, ein funktionierendes Script zu posten.

Ich habe jetzt unter Mac OS 9 und mit Excel 2001 den Code umgeschrieben. Statt 'Workbook'
wird 'Worksheet' verwendet. Die Adressierung der Zellen geschieht im "L1C1"-Format.
Das Öffnen der Textdatei mit 'OpenText txtPath with TabDelimiter'. Und so weiter.
Versuch's bitte mal damit:
---
property diagrammDoc : ""
property hotFolder : ""
property txtDoc1 : "stephan1.txt"
property txtDoc2 : "stephan2.txt"
property txtDoc3 : "stephan3.txt"

if diagrammDoc = "" then
    with timeout of 300 seconds
        set diagrammDoc to (choose file with prompt "Das Excel-Diagramm-Dokument wählen") as string
    end timeout
else
    try
        diagrammDoc as alias
    on error
        with timeout of 300 seconds
            set diagrammDoc to (choose file with prompt "Das Excel-Diagramm-Dokument wählen") as string
        end timeout
    end try
end if
if hotFolder = "" then
    with timeout of 300 seconds
        set hotFolder to (choose folder with prompt "Den Textdateien-Hotfolder wählen") as string
    end timeout
else
    try
        hotFolder as alias
    on error
        with timeout of 300 seconds
            set hotFolder to (choose folder with prompt "Den Textdateien-Hotfolder wählen") as string
        end timeout
    end try
end if

set pathList to {hotFolder & txtDoc1, hotFolder & txtDoc2, hotFolder & txtDoc3}
tell application "Microsoft Excel"
    Activate
    Open diagrammDoc
    set docName1 to Name of document 1
    repeat with i from 3 to 5
        set curRange to "L2C" & i & ":L47C" & i
        set txtPath to item 1 of pathList
        try
            OpenText txtPath with TabDelimiter
            set docName2 to Name of document 2
            tell document docName2
                tell Worksheet 1
                    set columnM to Value of every Cell of Range ("L9C13:L54C13")
                end tell
            end tell
            Close document docName2 saving No
            tell document docName1
                tell Worksheet 1
                    set Value of every Cell of Range curRange to columnM
                end tell
            end tell
        end try
    end repeat
    display dialog "Fertig." buttons "OK" default button 1 with icon 1 giving up after 1
end tell

---
Gruss, Hans


als Antwort auf: [#419852]
X