[gelöst] CC Excel 2013 Automation, Excel nicht "unsichtbar"

27. Juli 2016 08:45

Hallo Zusammen,

ich habe bei dem folgenden Code das Problem, dass sich Excel immer noch am Bildschirm zeigt, obwohl ich meine alle Register gezogen zu haben, damit das nicht passiert.

Bitte helft mir den Fehler zu finden.
Viele Grüße
Hans-Dieter

Variabeln:
    Name DataType Subtype Length
    ExcelApp Automation 'Microsoft Excel 15.0 Object Library'.Application
    ExcelDoc Automation 'Microsoft Excel 15.0 Object Library'.Workbook
    ExcelSheet Automation 'Microsoft Excel 15.0 Object Library'.Worksheet
    ExcelRange Automation 'Microsoft Excel 15.0 Object Library'.Range

Code:
 ( Auszug)
    CLEAR(ExcelApp);
    CLEAR(ExcelDoc);
    CLEAR(ExcelSheet);
    CLEAR(ExcelRange);
    IF ISCLEAR(ExcelApp) THEN
    BEGIN;
        IF NOT CREATE(ExcelApp,true,TRUE) THEN
        BEGIN;
             ERROR('Konnte keine Execel-Instanz erstellen!');
        END;
    END;

    IF NOT EXISTS(Vorlage) THEN
    BEGIN;
        ExcelApp.Quit;
        ERROR('Formular %1 existiert nicht!', Vorlage);
    END;

    ExcelApp.ScreenUpdating := FALSE;
    ExcelApp.Visible := FALSE;
    ExcelApp.Interactive := FALSE;

    ExcelDoc := ExcelApp.Workbooks.Open(Vorlage);  // Hier erscheint Excel als graue Fläche auf dem Bildschirm
    ExcelSheet := ExcelApp.Sheets.Item('Blatt oNr');
//    ExcelSheet.Activate;
    ExcelSheet.Range('C2').Value := Vnummer;  // Ab hier ist Excel voll sichtbar
    ExcelSheet.Range('J1').Value := Kunde;
Zuletzt geändert von h-d.neuenfeldt am 27. Juli 2016 17:09, insgesamt 1-mal geändert.

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 09:10

Hallo,

ins Blaue geraten:
Hast du den vollständigen Pfad der Excel-Datei in der Variablen "Vorlage" ?
Gibt es das Item 'Blatt oNr' ?

Dein Problem: Excel wird nicht "unsichtbar" versteh ich allerdings nicht.
Zuvor prüfst du ab, ob du eine Excel Instanz erzeugt hast und dann ob es die Datei gibt.
Für mich sieht das so aus als willst du dann an der Stelle die Excel-Datei 'Vorlage' öffnen, oder?

mfg,
winfy

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 09:30

Hast du den vollständigen Pfad der Excel-Datei in der Variablen "Vorlage" ?

ja

Gibt es das Item 'Blatt oNr' ?

ja

Für mich sieht das so aus als willst an der Stelle die Excel-Datei 'Vorlage' öffnen?

ich möchte die Vorlage unsichtbar öffnen, Werte rein schreiben und an einem neuen Ort wieder speichern.

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 09:34

Verstehe,

habe ich noch nie gemacht. ;)

wieder Tipp ins Blaue:

probiere mal
Code:
ExcelApp.Visible(FALSE);


mfg,
winfy

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 09:35

ExcelApp.Visible(FALSE);

ebenfalls schon probiert, keine Änderung

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 09:46

"Excel ist grau" sieht so aus :
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 10:44

Es ist auch egal, ob die Variablen lokal oder global sind. in beiden Fällen bleibt das Verhalten gleich ..

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 11:49

ich habe das Objekt auch bereits als TXT-Datei exportiert und alle Eventtrigger entfernt, wieder importiert, kompiliert --> Keine Änderung

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 13:12

Habe das in einer Testumgebung getestet, allerdings ist da ein älteres Excel drauf.
Da klappt das mit:

Code:
ExcelApp.Visible(FALSE);


Klappt das bei dir generell nicht oder nur in dem obigen Report?

mfg,
winfy

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 13:32

Klappt das bei dir generell nicht oder nur in dem obigen Report?

ich habe nur diese eine Stelle an der ich das benutzen will

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 13:50

Habe wie gesagt deinen Code kopiert.

Am Ende nur noch den Code hinzugefügt, damit er wieder in die Exceldatei schreibt und den Speicher wieder freigibt.

Code:
ExcelApp.Save;
ExcelApp.Quit;
ExcelApp.Visible := TRUE;
CLEAR(ExcelApp);
CLEAR(Book);
CLEAR(Sheet);



Habe es getestet mit Microsoft Excel 12.0 Object Library auf Windows 7.0
Klappt.

Vielleicht liegt es ja an der neueren Office Version evtl. auch an neuerem Betriebssystem?

[EDIT]
Habe da etwas für Microsoft Excel 15.0 / 14.0 Object Library gefunden (Link):
Excel produces a General Protection Fault error when you close a new Excel worksheet that is created when Excel is invisible. To resolve this, you can make Excel visible immediately after you create a new worksheet. You can also make Excel visible just before you create a new Excel worksheet and then make it invisible again immediately after creating the new Excel worksheet. In this case, you would add the following code.

Code:
xlApp.Visible := TRUE;
xlBook := xlApp.Workbooks.Open(FileName);
xlApp.Visible := FALSE;


Setz das ExcelApp.Visible=FALSE; mal nach dem ExcelApp.Workbooks.Open() und zuvor ExcelApp.Visible=TRUE;

[/EDIT]

mfg,
winfy

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 15:47

es ist irgendetwas mit der Office-Installation ...
Ich habe das Office 2013 deinstalliert und neu installiert --> Programm läuft wie ich will
dann habe ich die Office-Updates eingespielt --> Programm läuft nicht mehr wie ich will, es liefert den oben beschrieben Fehler ...

ergo: Navision unschuldig, ich weiss aber immer noch nicht wie ich den Fehler wegbekomme und habe auch keine Idee, wen ich jetzt fragen soll :shock: :shock: :shock:

Wer hat nen Tipp ?

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 15:52

Hallo,

das hier ist dir schon mal über den weg gelaufen, und du setzt NAV 2009 R2 mit dem aktuellsten Technischen Build ein?


EDIT: Falls es 2009 SP1 ist. Auch hier der KB-Artikel.

Gruß Fiddi

Re: CC Excel 2013 Automation, Excel wird nicht "unsichtbar"

27. Juli 2016 17:07

Ursache gefunden :

nach dem Deinstallieren von
Sicherheitsupdate für Microsoft Excel 2013 (KB3115262) 32-Bit-Edition
funktioniert alles wie es soll.

Re: [gelöst] CC Excel 2013 Automation, Excel nicht "unsichtb

28. Juli 2016 09:03

h-d.neuenfeldt hat geschrieben:nach dem Deinstallieren von
Sicherheitsupdate für Microsoft Excel 2013 (KB3115262) 32-Bit-Edition
funktioniert alles wie es soll.


In gewisser Weise kann ich aber nachvollziehen, dass es auch sicherheitsbedenkliche Züge hat im Hintergrund ein Programm (invisible) laufen zu lassen ohne das der User etwas mitbekommt. Auch wenn es hier sicherlich berechtigt ist. :wink:

mfg,
winfy