Announcement

Collapse
No announcement yet.

Excel per DDE Anstuerung funktioniert mit Excel 2013 nicht mehr

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Excel per DDE Anstuerung funktioniert mit Excel 2013 nicht mehr

    Hallo Miteinander,
    ich steuere mit ein paar DDE Aufrufen aus meiner Anwendung Excel an, nur um dort Daten zu exportieren. Das hat bisher problemlos geklappt.
    Nun verwende ich seit kurzer Zeit Windows8 und Excel 2013 und es klappt nicht mehr, wie gewohnt.

    Excel wird noch gestartet.
    Aber ich schaffe es nicht mehr mit "WORKBOOK.INSERT" ein neues Sheet zu erzeugen und darin meine Daten abzulegen.
    Starte ich Excel manuell und öffne ein leeres Arbeitsblatt, funktioniert es wieder. An den Marcos kann es also nicht liegen, denke ich.

    Im "Trust Center" von Excel habe ich nun schon alle möglichen Versuche unternommen Marcos, Datenaustausch etc. freizugeben. Aber bisher ohne Erfolg.

    Hat jemand da einen Tipp?
    Ich kann nicht feststellen ob es an Windows 8 oder an EXCEL 2013 liegt.

    Danke
    Andreas

    PS: Der Umweg über eine CSV-Datei ist hier kein Thema.

  • #2
    Ich weiss natürlich nicht, aus welcher Anwendung du da an Excel ran musst - ich bin bei excel immer recht leicht zum ziel gekommen, indem ich es als ole-Objekt eingebunden hab...

    Comment


    • #3
      Originally posted by Andreas Böhme View Post
      Aber ich schaffe es nicht mehr mit "WORKBOOK.INSERT" ein neues Sheet zu erzeugen und darin meine Daten abzulegen.
      Was heißt das?
      Gibt es eine Fehlermeldung?
      Gibt es einen Codeschnipsel?

      Grüße
      Tino
      Ich habs gleich!
      ... sagte der Programmierer.

      Comment


      • #4
        WOW. Das DDE überhaupt noch funktionierte ist schon ein Wunder.

        Ich würde das als Anlass nehmen die Uralt-Technik DDE zu entsorgen und auf OLE/ActiveX zu wechseln.

        Comment


        • #5
          @tömmel: Danke. Umstellung auf OLE wäre eine Möglichkeit. Aber ich will ja wissen, warum es mit dem bisherigen Code nicht mehr funktioniert.


          @tino
          Originally posted by tinof View Post
          Was heißt das?
          Gibt es eine Fehlermeldung?
          Gibt es einen Codeschnipsel?
          Ich rufe vereinfacht

          FDDEClientConv.ExecuteMacro('WORKBOOK.INSERT(1)', False)

          auf

          Das Ergebnis ist true.
          Normalerweise habe ich nach Ausführung dann ein neues Excelsheet erzeugt.

          Die komplette Routine sieht so aus

          Cmd=WORKBOOK.INSERT(1)

          procedure TEObj.Exec(const Cmd: String);
          var Buffer : PChar;
          begin

          ....

          Buffer := StrAlloc(Length(Cmd)+SizeOf(Char));
          try

          if not FDDEClientConv.ExecuteMacro(StrPCopy(Buffer, Cmd), False) then
          begin
          Flush;

          if not FDDEClientConv.ExecuteMacro(Buffer, True) then
          raise ExcelError.CreateFmt(msgCmdAcceptErr, [Cmd]);
          end;
          finally
          StrDispose(Buffer);
          end;
          end;


          Andreas

          Comment

          Working...
          X