none
Access 2007: OLE Fehler 2785 bei ungebundenem Objektfeld mit Excel Sheet

    Allgemeine Diskussion

  • Guten Tag,

    In einem ungebundenen OLE-Control zeige ich ein Excel Worksheet mit 2 Diagrammen.

    Das Steuerelement wird bei Form-Öffnen per VBA aktualisiert (acOlelinked etc).

    Es arbeitet einwandfrei unter Access 2003 /Excel2003  jedoch nicht unter Access 2007.

    Hier kommt die Fehlermeldung 2785 -Der Ole-Server konnte das Objekt nicht öffnen.

    Und zwar bleibt die kleine VBA-Prozedur bei  OleFeld.Action = acOLECreateLink hängen.

    Neuaufbau in Access 2007 >>>gleicher Fehler

    Wo muß ich den Fehler suchen?Wer kann helfen?

    Vielen Dank vorab

    Nachtrag:

    Zu Testzwecken habe ich nur eine Form mit einem ungebundenen OLE-Feld in der DB.

    Das Excelfile ist per Assistent ausgewählt und verknüpft. Soweit ok.

    Die VBA-Prozedur  (aus Access-Hilfe) soll nun zur Laufzeit ein bestimmtes Arbeitsblatt aus dieser Exceldatei verlinken und das dortige Diagramm anzeigen.

    Es scheint als ob die SourceItem Eigenschaft nicht richtig ausgewertet wird.(Bei ACC2003 funktioniert das jedoch)

    Leider habe ich noch keine Spur wo ich suchen muß.

    aktuelle Schreibweise   Olefeld.Sourceitem = "Bericht Diagramm1" -ist das evtl bei Access2007 anders zu schreiben

    Wobei 'Bericht' das Arbeitsblatt ist und das  'Diagramm1' dort liegt

    Ich hoffe das war nicht zu umständlich erklärt-deshalb bitte ich nochmal um Tips.

    Danke

     

    Arbeitsumgebung: WIN7 Pro,Office2007 Enterprise

    Sonntag, 2. Mai 2010 11:33

Alle Antworten

  • Hallo DiscoMixer,

    Schau Dir mal den folgenden Link an. Vielleicht kann er Dir weiter helfen.

    http://office.microsoft.com/en-us/access/HA012327931033.aspx

    Es steht folgendes: „Applies to: Microsoft Office Access 2007“ und es gibt ein Code Beispiel:

     

    Sub Command1_Click
     OLE1.Class = "Excel.Sheet" ' Set class name.
     ' Specify type of object.
     OLE1.OLETypeAllowed = acOLELinked
     ' Specify source file.
     OLE1.SourceDoc = "C:\Excel\Oletext.xls"
     ' Specify data to create link to.
     OLE1.SourceItem = "R1C1:R5C5"
     ' Create linked object.
     OLE1.Action = acOLECreateLink
     ' Adjust control size.
     OLE1.SizeMode = acOLESizeZoom
    End Sub

     

    Grüße,

    Robert

    Dienstag, 11. Mai 2010 09:25
    Besitzer
  • Danke für die erste Antwort.

    Das ist ja ziemlich genau der Codeschnipsel welcher bei mir auch eingesetzt wird:

      With Me.OLE1
       .Class = "Excel.Sheet"
       .Enabled = True
       .Locked = False
       ' Specify what kind of object can appear in the field.
       .OLETypeAllowed = acOLELinked
       ' Class statement--optional for Excel worksheet.
       ' Type the correct path name.
       .SourceDoc = "H:\manu.xlsx"
       ' Range statement--optional for Excel worksheet.
        .SourceItem = "Bericht Diagramm1" 
       ' Create the linked object.
       .Action = acOLECreateLink
       ' Optional size adjustment.
       .SizeMode = acOLESizeStretch
       .UpdateOptions = acOLEUpdateManual
       .Action = acOLEUpdate
      End With
    Und dieser Code funktioniert auf einem anderen PC mit Office 2003 einwandfrei (Excelfile xls)
    Unter Office 2007 immer noch der Fehler 2785
    Wenn Sourceitem leer bleibt ("") dann gibt es keine Fehlermeldung.
    Zum testen habe ich auch andere Werte für Sourceitem versucht-auch die Range aus der Hilfe-jedoch immer der Fehler.
    Verweise sind alle ok.(keine Fehler angezeigt)
    Was kann ich tun -kann ich nachvollziehen was da intern aufgerufen wird -wird der Sourceitem Text nicht richtig übergeben?

    Wer kann helfen?
    Gruß und Danke
    Discomixer

     

    Dienstag, 11. Mai 2010 19:03
  • Hallo DiscoMixer,

    Kannst Du mal versuchen die SourceItem Eigenschaft wie folgt, festlegen?

        l_Sheet = "Short name"

        OLE1.SourceItem = l_Sheet & "!R1C1:R5C5"

    Wenn man SourceItem nicht festlegt dann wird an das gesamte Objekt gelinkt. („Wenn Sie eine Verknüpfung mit dem gesamten Objekt herstellen möchten, dürfen Sie keinen Wert für die SourceItem-Eigenschaft angeben“)

    Schau Dir mal auch folgende Hyperlinks an. Vielleicht findest Du etwas was Dir weiter helfen kann.

    http://www.wer-weiss-was.de/theme153/article5596666.html

    http://www.accessmonster.com/Uwe/Forum.aspx/access-formscoding/18838/Embedded-Excel-sheet-viewer (Schau mal hier was Rafael Romero schreibt: Rafa Romero - 13 Feb 2005 13:20 GMT und Rafael Romero - 16 Feb 2005 09:34 GMT)

    Grüße,

    Robert

    Mittwoch, 12. Mai 2010 06:58
    Besitzer
  • Hallo Robert,

    leider hatte ich diese Informationen schon vorab gefunden und gecheckt.Ohne Ergebnisse.

    Es bleibt bei dem Fehler .

    Weil ja unter Access 2003 alles ok ist macht das ganze ja noch rätselhafter

    Aber ich gebe nicht  auf und werde weiter suchen und forschen.

    Falls noch Tips da sind ,bitte her damit.

    Vielen Dank

    Discomixer

    Walter

    Mittwoch, 12. Mai 2010 17:12
  • Hallo Access-Profis,

    zu dem Problem ein bestimmtes Excelblatt in einem ungebundenen Frame zu zeigen:

    leider habe ich zu dem geschilderten Problem noch immer keine Lösung gefunden.In meiner Umgebung (win7pro/Office2007Enterprise) habe ich vieles getestet-

    es bleibt dabei : Fehler 2785 -das Objekt konnte nicht geöffnet werden .

    Auch ein Test unter WinXp Pro mit Office2007 scheiterte mit dem selben Fehler.

    In der Umgebung XP/Office 2003 läuft jedoch alles einwandfrei.

    Wer kann helfen?

    Gruß

    Walter

     

    Donnerstag, 1. Juli 2010 07:58
  • Hallo ,

    hier noch ein Nachtrag mit weiteren Hinweisen.

    Vielleicht kann ja jemand daraus Schlüsse  ziehen und mir einen entscheidenen Tip geben

    Habe noch folgende Varianten getestet

    Olefeld.SourceItem = "bericht!Test"  >>>funktioniert wobei Test ein Namensbereich im Tabellenblatt Bericht ist

    OLEfeld.SourceItem = "z1s1:z5s5"     >>>funktioniert zeigt angegebene Range vom ersten Worksheet

    OLEfeld.SourceItem = "Bericht Diagramm1"     >>>funktioniert nur in Access 2003 nicht in Access 2007 (Diagramm in Tabellenblatt Bericht)

    Also gehe ich davon aus das die Eigenschaft Sourceitem nicht in der richtigen Syntax übergeben wird.

    Für jeden weiteren Tip wäre ich sehr dankbar.

    Gruß

    Walter

     

    Samstag, 3. Juli 2010 18:45
  • Hallo Walter,

    Habe noch folgendes gemacht.

    1)    Habe eine Excel Datei mit den Namen TestOLEAuto.xls erstellt.

    Diese Excel Datei enthält zwei Blätter : Sheet1 und Sheet2

    Die Datei wurde als Microsoft Office Excel 97-2003 Worksheet (.xls) gespeichert.

    Auf jedem Blatt wurde ein Chart erstellt und den Namen von dem Chart gewechselt auf:

    Sheet1.ChartObjects(1).Name = "Chart auf Sheet1"

    Sheet2.ChartObjects(1).Name = "Chart auf Sheet2"

    2)    Access 2007 aufgemacht.

    Ein Report erstellt und auf Design View gegangen.

    Aus Excel Blatt Sheet1 die Chart mit Copy genommen und im Access 2007 mit Paste Special (Alt+E+S) als Microsoft Office Excel Chart (Paste Link) eingefügt.

    Es wurde ein Unbound Object Frame in dem Report erstellt mit folgenden Eigenschaften für Data:

    SourceItem=Sheet1![TestOLEAuto.xls]Sheet1 Chart auf Sheet1 bzw. SourceItem=Sheet2![TestOLEAuto.xls]Sheet2 Chart auf Sheet2

    SourceDoc=C:\Filme\TestOLEAuto.xls

    OLEType=Linked

    OLETypeAllowed=Either

    OLEClass=Microsoft Office Excel 2003

    Class=Excel.Sheet.8

    UpdateOptions=Automatic

    DisplayType=Content

    Enabled=No

    Nachher habe ich manuell folgende Eigenschaften geändert:

    OLETypeAllowed=Linked

    Class=Excel.Chart.8

    Ich sehe beide Charts in dem Report.

    Habe als Anhaltspunkt auch Informationen aus folgendem Artikel verwendet:

    ACC: Programmatically Link or Embed an Object in a Form (95/97)

    Grüße,

    Robert

    Montag, 5. Juli 2010 10:56
    Besitzer
  • Hallo Robert,

    vielen Dank für die Mühe zur ausführlichen Beschreibung

    Also eines vorweg: Per Copy und Paste Link klappt es ja einwandfrei

    Werte werden aktualisiert -so soll es sein.

    Könnte ich ja so stehen lassen-aber:

    Ein Setzen der Sourceitem Property per VBA funktioniert auch mit der geänderten Schreibweise nicht.

    z.B wie SourceItem=Sheet1![TestOLEAuto.xls]Sheet1 Chart auf Sheet1

    habe diese Eigenschaft direkt aus der per Paste Link erzeugten UnboundFrame entnommen

    Wenn ich nur wüsste warum das so ist bei Access 2007.

    Vielleicht kommt ja noch der Geistesblitz....

    Gruß und nochmal Danke

    Walter

     

     





    Donnerstag, 8. Juli 2010 15:28