Anzeige
Archiv - Navigation
1048to1052
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Icon beim Einfügen von Objekten genau plazieren

Icon beim Einfügen von Objekten genau plazieren
13.02.2009 21:41:00
Objekten
Hi,
ich lade mit dem Code (Beispiel von hier) ein Anhang in ein Sheet rein. Das funktioniert auch gut. Nur wenn ich zwei Objekte nacheinander einfügen, landen die Icons immer übereinander, also das zweite legt sich bei laden direkt auf das erste. Ich habe aber nur diese eine Zelle C39 zum einfügen.
Die Zelle ist eigentlich ziemlich breit um 4 oder 5 Icons nebeneinander zu gekommen.
Meine Frage: kann ich die Icons beim einfügen so platzeien, wenn schon eines drin ist, das nächste direkt daneben zu Platzieren ? Hier mal der Code:
Dim Dateiname As Variant
Dateiname = Application.GetOpenFilename '("Micrsoft Excel-Dateien (*.xls),*.xls")
If Dateiname = False Then Exit Sub
Range("C39").Select
ActiveSheet.OLEObjects.Add(Filename:=Dateiname, Link:=False, _
DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
IconIndex:=5, IconLabel:=Dateiname).Select
Danke mal
Joachim

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Icon beim Einfügen von Objekten genau plazieren
13.02.2009 23:30:00
Objekten
Hi,
hört sich einfach an, ist aber alles andere als trivial, weil viele Abfragen nach Vorhandensein und
Position erforderlich sind. Mal sehen, ob sich das jemand antut, wahrscheinlich Timo, ich bin zu faul dazu.
Die Frage bleibst selbstverständlich offen.
mfg Heinz
AW: Icon beim Einfügen von Objekten genau plazieren
14.02.2009 11:38:00
Objekten
Hi Joachim,
vielleicht so:

Sub ObjekteEinfuegen()
Dim Dateiname As Variant
Dim ooObjekt As OLEObject
Dateiname = Application.GetOpenFilename '("Micrsoft Excel-Dateien (*.xls),*.xls")
If Dateiname = False Then Exit Sub
Set ooObjekt = ActiveSheet.OLEObjects.Add(Filename:=Dateiname, Link:=False, _
DisplayAsIcon:=True, IconFileName:= _
"C:\WINDOWS\Installer\{90110409-6000-11D3-8CFE-0150048383C9}\xlicons.exe", _
IconIndex:=5, IconLabel:=Dateiname)
With ooObjekt
.Top = Range("C39").Top
If ActiveSheet.OLEObjects.Count > 1 Then _
.Left = ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count - 1).Left + ActiveSheet. _
OLEObjects(ActiveSheet.OLEObjects.Count - 1).Width
End With
Set ooObjekt = Nothing
End Sub




Anzeige
AW: Icon beim Einfügen von Objekten... Korrektur
14.02.2009 11:44:00
Objekten...
Hi Joachim,
da die linke Iconausrichtung auch C39 sein soll, müsste der Code wie folgt geändert werden:

With ooObjekt
.Top = Range("C3").Top
If ActiveSheet.OLEObjects.Count > 1 Then
.Left = ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count - 1).Left + ActiveSheet. _
OLEObjects(ActiveSheet.OLEObjects.Count - 1).Width
Else
.Left = Range("C3").Left
End If
End With




AW: Icon beim Einfügen von Objekten... Korrektur
14.02.2009 13:59:00
Objekten...
Hallo Karin,
vielen Danke. Also im Prinzip funktioniert es , die weiteren Objekte legen sich immer direkt neben das andere, nur das erste Objekt legt sich , trotz Angabe C39 immer in die Zeile 39 zwischen die Spalten H und I. (mit Deiner Korrektur)
Ich hatte erst mein Sheet in Verdacht , das da was anders ist, habe aber dann ein neues Blatt aufgemacht und habe es noch mal getestet. da ist dieser Efekt aber auch.
Kannst Du Dir erklären, warum ? Ich nicht, es steht doch drin C39 , hhmmmmmm
Gruss
Joachim
Anzeige
AW: Icon beim Einfügen von Objekten... Korrektur
14.02.2009 16:38:00
Objekten...
Hi Joachim,
ich hoffe, du hast in meinem Korrekturcode aus der 3 eine 39 gemacht - das hatte ich vergessen in meinem Testbeispiel zu ändern. Daran kann es allerdings nicht liegen, weil dies ja nur die Zeile und nicht die Spalte betrifft.
Ich kann das von dir geschilderte Verhalten leider auch nicht nachvollziehen - das 1. Objekt wird korrekt in C39 eingefügt. Wird es bei dir immer zwischen H und K eignefügt oder stets dort wo dein Cursor steht? Füge mal vor die Zeile With ooObjekt noch diese Zeile ein: DoEvents - vielleicht kommt Excel bei dir mit dem Bildschirmaufbau nicht zurecht.


Anzeige
AW: Icon beim Einfügen von Objekten... Korrektur
14.02.2009 20:12:00
Objekten...
Hallo Karin,
habe den Code mal so geändert, ist aber immer noch das gleiche Problem. Wenn ich mein Curser vorher in C39 platziere und den Code ausführe, dann sehe ich wie das Icon kurz in der Zelle c39 erscheint und dann sofort rüber nach H und I 39 springt
hier mal die Beispieldatei:
https://www.herber.de/bbs/user/59467.xls
Hast Du damit den gleichenEffekt ?
Gruss
Joachim
kann es sein , dass .....
14.02.2009 21:15:00
Joachim
...sich die Icons immer die rechte Kante des Buttons suchen und dann in die Zeile 39 springen. Ich habe mal den Button auf dem Sheet hin und her geschoben und dann den Code ausgeführt. Je nach dem platzíert sich das icon zwar in die Zeile 39 aber immer an die Rechte Kante des Buttons.
Teste mal und setze den Buttton an eine andere Position und führe den Code wieder aus.
Gruss
Joachim
Anzeige
AW: Dein Button zählt mit!
15.02.2009 00:17:00
Erich
Hi Joachim,
des Rätsels Lösung ist eigentlich ganz einfach:
Du hattest Karin noch nicht verraten, dass du auf dem Blatt einen Button platziert hast.
Karin hatte dir einen Code gepostet, der von einem Blatt zunächst ohne Buttons ausgeht.
Dein Button ist auch ein OLEObject und zählt bei OLEObjects.Count natürlich mit.
Deshalb ist "If ActiveSheet.OLEObjects.Count > 1" nach dem "OLEObjects.Add(...)"
IMMER erfüllt, die Codezeile ".Left = Range("C39").Left" wird nie erreicht.
Das erste mit dem Code eingefügte Objekt wird also immer
rechts neben deinen Button (aber in Zeile 39) platziert.
Probier mal

Option Explicit
Private Sub CommandButton1_Click()
Dim Dateiname As Variant, ooObjekt As OLEObject
Dateiname = Application.GetOpenFilename '("Micrsoft Excel-Dateien (*.xls),*.xls")
If Dateiname = False Then Exit Sub
Set ooObjekt = ActiveSheet.OLEObjects.Add(Filename:=Dateiname, _
Link:=False, DisplayAsIcon:=True, IconFileName:= _
"C:\Programme\Gemeinsame Dateien\Microsoft Shared\Office10\MSOICONS.EXE", _
IconIndex:=5, IconLabel:=Dateiname)
DoEvents
With ooObjekt
.Top = Range("C39").Top
If ActiveSheet.OLEObjects.Count > 2 Then   ' hier stand eine 1
.Left = ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count - 1).Left + _
ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count - 1).Width
Else
.Left = Range("C39").Left
End If
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
ahhh...
16.02.2009 07:51:00
Joachim
Danke Erich,
da hätte ich aber auch wirklich selber drauf kommen können, nachdem ich schon erkannt hatte, dass sich diese icons immer neben diesen Button platzieren. Naja, sei es drum.
Auf jeden Fall vielen Dank, dass Du mich von diesem Problem befreit hast. :-)
Gruss
Joachim
Nochmals danke, für die Hilfe,, oT
16.02.2009 07:52:00
Joachim

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige