Hallo,
wie kann ich die Größe eines aus access aufgerufenen ole-Objektes einstellen?
Mit den folgenden Zeilen rufe ich das Objekt (z.B. Excel-Datei) aus access (2003) auf:
If Not IsNull(Me.O) Then
With Me.O
.Verb = acOLEVerbOpen
.Action = acOLEActivate
End With
End If
Bei einigen aufgerufenen Excel-Dateien ist das Fenster innerhalb der Excel-Anwendung nicht maximiert:
1. Wie kann ich diese "innere" Größe aus access heraus beim Aufruf maximieren?
2. Wie kann ich die "äußere" Größe der aufgerufenen Excel-Datei einstellen?
Harald
PS:
Mir sind die Nachteile einer Einbindung von ole-Objekten bekannt.
Ich frage aus Neugierde ("Grundlagenforschung" ;))
Außerdem könnte ich auf diese Weise den Zugriff auf bestimmte Dateien leichter steuern als wenn ich das im Betriebssystem auf Ordner-Ebene hinterlegte Berechtigungskonzept verwende.
Servus Harald,
habe ich Dich / Dein Vorhaben soweit richtig verstanden, dass Du über Deine DB Dateien (z.B. Excel-Tabellen, Word-Dokumente, pdf-Dateien) "einfach nur" maximiert öffnen willst??? Denn wenn dem so ist, solltest Du wirklich keine OLE-Objekte verwenden, insbesondere nicht, wenn es sich nur um verknüpfte Dateien handelt. Das reine Öffnen einer Datei nebst Steuerung der Fenstergröße der zugehörigen Anwendung ließe sich einfacher realisieren. So Du zudem innerhalb der DB beschränken möchtest, wer welche Datei öffnen kann, gibt es ebenfalls relativ simple Lösungen.
Da ich aber regelmäßig dazu neige, den Grundsachverhalt nicht wirklich zu verstehen, sei doch so nett und teile mir (bevor's ins Detail geht) mit, ob ich Dich / Dein Vorhaben überhaupt richtig verstanden hab. ;) ;) ;)
Gruß aus Berlin
Pat
Hallo Pat,
ich habe in einer access Tabelle ein ole-Feld, in dem ich z.B. eine Excel-Datei habe. Diese will ich aus access heraus aufrufen und es soll das normale Excel-Fenster aufgehen (was ja auch schon funktioniert). Da ich aber zu "faul" bin, jedesmal dort die Sicht vom inneren Fenster zu maximieren, frage ich nach einer bequemeren Lösung.
Ich habe diesen Weg und nicht die Verknüpfung gewählt, damit ich über die im Datensatz stehenden Berechtigungen lenken kann, wer, was mit der Excel-Datei machen kann.
Bei einer Verknüpfung müßte ich die Datei in einem (für nahezu jeden) zugänglichen Ordner ablegen, damit die Datei per Link aufgerufen werden kann. Dann könnten aber auch die User direkt diesen Ordner anwählen und womöglich nicht für sie bestimmte Dateien aufrufen. Die dateispezifische Berechtigungszuweisung müßte ich in diesem Fall über die EDV-Abteilung machen, was nicht schnell genug umsetzbar ist.
Es ist mir vollkommen bewußt, dass die mdb dadurch aufgebläht wird (siehe mein PS). Da ich wenn überhaupt dieses Vorgehen nicht bei jedem Datensatz praktizieren werde, halte ich diesen Hindernisgrund aber für weniger relevant.
Harald
...nun, empfehlen würde ich Dir hierbei folgendes...
zunächst zum Öffnen der Dateien...
http://www.office-loesung.de/ftopic35417_0_0_asc.php (http://www.office-loesung.de/ftopic35417_0_0_asc.php) (funktionert super)
Wenn die Dateien aus einer Liste (z.B. einer Art Inhaltsverzeichnis aus einem Endlosformular heraus) geöffnet werden sollen, brauchst Du eigentlich nur eine Tabelle, in welcher Dateinamen und Dateipfad hinterlegt werden (und natürlich ein entsprechendes Endlosformular).
Wenn Du einem Datensatz einfach nur eine Externe Datei zuordnen willst, kannst Du anstelle des OLE-Objekts in der zugrunde liegenden Tabellen ein längeres Text- oder Memofeld nehmen und dort den Dateipfad hinterlegen; geöffnet wird die datei dann wie im o.g. Thread genannt.
Was die Zugriffsbeschränkungen angeht: Wenn Du wie hier beschrieben oder ähnlich vorgehst, müssen deine User doch gar nicht sehen, wo die zu öffnenden Dateien abgelegt sind...und so die User den entsprechenden Ordner doch finden, Dateien, die sie nicht zu öffnen haben, einfach woanders hin verschieben oder (wie bei Excel- und Word-Dateien möglich) mit Lese-/Schreibschutz versehen.
Aber genug der Alternativen; wenn Du bei Deinem Modell bleiben möchtest, ist es vielleicht eher ratsam, den"Maximierungsbefehl" direkt in Excel per VAB zu etablieren (ich erinnere mich dunkel, könnte was mit Application.WindowState = xlMaximized sein, bin mir da aber nicht 100% sicher)
Viel Erfolg
Hallo Pat,
danke für den Link.
Harald