GeomarketingForum.com
September 05, 2010, 11:16:21 *
Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: Jetzt beim GeoMarketingforum.com registrieren ...
Denn nur wer mitmacht, ist "eigentlich" INFORMIERT !
 
   Übersicht   Hilfe Suche Kalender Login Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: [Gelöst] VBA und Layer  (Gelesen 1327 mal)
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« am: März 17, 2009, 08:50:28 »

Hallo zusammen,
ich bin ein zielmlicher VBA/VB neuling und muss jetzt in der Firma ein kleines VBA programm schreiben das einfach mehrere
vordefenierte layer in ein Porjekt/ Arbeitsmappe importiert. Grin

hab schon einiges ausprobiert allerdengs bekomme ich immer wieder die gleiche Fehlermeldung Huh Huh "Objekt ist nicht Optional"  Huh Huh....

Gruß
SiRo
« Letzte Änderung: März 30, 2009, 10:49:39 von paff » Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #1 am: März 17, 2009, 03:42:38 »

Hi Siro

ein bißchen Beispielcode zu posten würde helfen

Als Hinweis
Mit Importlayertemplate den Layer in Projekt laden

Mit map.Addlayer LAyer aufs Arbeitsblatt
Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #2 am: März 26, 2009, 07:59:38 »

Hallo
so sry das ich mich wieder so spät melde (war die ganze zeit krank Sad )

das es mit addLayer gehen soll hab ich mir schon gedacht nur das problem ist folgendes:
Wenn ich folgenden code eingebe sagt er mir "Objekt erforderlich"

layerName = "Deutschland Kreise 2004"
Set ActiveMap.AddLayer = project.SearchLayoutByName("Test"), 0
map.AddLayer layerName, 0


könntest du einen kleines bsp mal posten wie das richtig gemacht wird?

ich verstehe da leider auch nicht welche parameter ich übergeben soll "Sub AddLayer(LayerKey As String, Pos As Integer)"
Was hier mit layerKey gemeint ist.
und wenn ich das so mache wie es ist dann bekomme ich eine fehlermeldung Sad
Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #3 am: März 26, 2009, 11:17:20 »

Was willst du genau machen

Einen Layer aus den Vorlagen auf einer MAP anzeigen?
Oder einfach nur einen Layer ins Projekt laden
Oder eine Layer der schon in einem Projekt liegt, auf einem Arbeitsblatt (hier natürlcih in einer MAP) anzeigen


Also die Abläufe.
es gibt die Vorlage auch templates genannt. Diese siehst du in RegioGraph rechts unten

Es gibt Layer und Arbeitsblätter, welche schon in ein Projekt geladen wurden. Diese siehst du in RegioGraph rechts in der Mitte

Es gibt Layer welche auf einer MAP angezeigt werden. Diese siehst du in RegioGraph rechts oben

So ist auch das Objekt Model
Ein Projekt enthält Layer-Objekte und Arbeitsblätterobjekte
mit dem Befehl ImportLayerTemplate können Layer aus den Vorlagen ins Projekt gebracht werden
Mit dem Befehl NewLayer bzw. NewLayout können neue Layer oder Arbeitsblätter angelegt werden
Mit dem Befehl SearchLayerByName können Layer im Projekt gesucht werden.


Ein Arbeitsblatt kann MAP Objekte verwalten
Über Activemap kann auf die aktivierte Map eines Layouts zugegriffen werden

Über das Map Objekt kann dann per AddLayer ein Layer in die Map hinzugefügt werden.
(Achtung, dieser Layer muß vorher mit dem befehl Layer.LoadLayer geladen werden.)

Erstaml kurzer überblick




 
« Letzte Änderung: März 26, 2009, 11:31:03 von paff » Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #4 am: März 26, 2009, 12:00:07 »

also  Roll Eyes
sry das war mir nicht klar das da sooo unterschiede gibt daher folgendes
ich habe z.B.: ein Projekt "Deutschland" in dem projekt erstelle ich eine Neu Arbeitsmappe Und jetzt würde ich gern die Layer aus vorlage ins projekt und dann auf die map bringen. Wenn ich dich richtig verstanden habe heist es für mich das ich dies in zwei schritten machen muss.

           1. Layer ins Projekt laden wahrscheinlich "ImportLayer"
           2. Layer aus dem Projekt auf die Map legen mit "AddLayer" befor ich aber ein layer adden kann muss ich es erstmal "zwischen speichern" mit LoadLayer?!

PS Ich weis bin etwas umständlich (sagen viele)
Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #5 am: März 26, 2009, 02:48:33 »

also  Roll Eyes
sry das war mir nicht klar das da sooo unterschiede gibt daher folgendes
ich habe z.B.: ein Projekt "Deutschland" in dem projekt erstelle ich eine Neu Arbeitsmappe Und jetzt würde ich gern die Layer aus vorlage ins projekt und dann auf die map bringen. Wenn ich dich richtig verstanden habe heist es für mich das ich dies in zwei schritten machen muss.

           1. Layer ins Projekt laden wahrscheinlich "ImportLayer"
           2. Layer aus dem Projekt auf die Map legen mit "AddLayer" befor ich aber ein layer adden kann muss ich es erstmal "zwischen speichern" mit LoadLayer?!

PS Ich weis bin etwas umständlich (sagen viele)

So siehts aus Grin
Nur noch eins beachten
Bei AddLayer wird ein LayerKey verlangt. Das ist nicht der LayerName sondern ein "interner Key" der unique für jeden Layer im Projekt ist.
Dieser Key ist aus jedem LAyer mit .layerkey auslesbar
Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #6 am: März 30, 2009, 08:10:48 »

Hi also es klappt schon mal mit dem layerkey allerdings bekomme ich immer wieder probleme mit loadlayer:


Function AddFolie()
    Dim map As rgMap
    Dim layerName As String
    Dim importLayer As rgLayer
    layerName = project.SearchLayerByName("Deutschland Kreise 2004").LayerKey
    MsgBox layerName
    importLayer.loadLayer.layerName <-- "Hier schmeist er mir immer wieder die Meldung raus 'Fehler beim Kompilieren: Function oder Variable erwartet' wobei variable hab ich ihm doch übergeben oder etwa nicht?! "
    ActiveMap.AddLayer layerName, 0 <-- "Hier sagt er mir 'Laufzeitfehler 91 Objektvariable oder With-Blockvariable nicht festgelegt' wenn ich das ohne der zeile dafor versuche"
End Function


und vernünftiges in der Hilfe kann ich auch nicht finden
Zitat

LoadLayer

Sub LoadLayer ()

Beschreibung
Lädt den Layer. Shocked
Huh ???aus der Hilfe ..... Huh Huh

PS: Ich weis ich frag viel kommt aber daher dass ich mit VB / VBA gar keine erfahrung habe bin java und c programmierer ^^

« Letzte Änderung: März 30, 2009, 08:20:51 von SiRo » Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #7 am: März 30, 2009, 09:19:39 »

Du mußt ja erstmal der Varibale importLayer etwas zuweisen.

set importLayer =  project.SearchLayerByName("Deutschland Kreise 2004")
importLayer.loadlayer


Nochmal kurz zur erklärung wegen "LoadLayer", das muß man nicht gleich kapieren ;-)

Wenn man in RegioGraph einen Layer aus den Templates ins Projekt zieht, wird dieser Layer zwar im Projekt angezeigt, ist aber noch nicht in den "Hauptspeicher" geladen.
Dies wurde so gemacht, da es lange dauert einen jenachdem sehr großen Layer zu laden. Über die Funktion LoadLayer ist das ganze besser steuerbar.


So würde der Code lauten um eine Layer aus dem Projekt auf eine Aktivierte Kartenbox an die oberste Position zu ziehen
Zitat
Dim clay As rgLayer
Dim layername As String

layername = "Europa Seen"
Set clay = project.SearchLayerByName(layername)
clay.LoadLayer

ActiveMap.AddLayer clay.LayerKey, 0
Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #8 am: März 30, 2009, 10:05:20 »

Shocked Shocked WOW es funktioniert.  Shocked Shocked
Allerding muss man dazu sagen das ActiveMap erst dann läuft wenn Layout geladen ist und dann auf  landkarte baerbeiten geklickt wurde.  Undecided

Ist zwar nicht 100% Tongue  das was ich eigentlich wollte allerdings kommt es dem schon sehr nahe.  Cheesy

Schonmal vielen dank  Grin
Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #9 am: März 30, 2009, 10:13:49 »

So würde der Code lauten um eine Layer aus dem Projekt auf eine Aktivierte Kartenbox an die oberste Position zu ziehen

Siehe oben  Wink
Es heißt ja schließlich "ActiveMap" und nciht "InaktiveMap"


Die Map-Box kannste per Code genauso aktivieren. oder ein Layout laden ,oder oder oder.
Jeder mausklick kann (bzw. Muß) sozusagen als Befehl ausgeführt werden

Du kannst die Mappingbox auch über die MapCollection direkt ansprechen
über rglayout.maps
Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #10 am: März 30, 2009, 10:18:43 »

Ja wer lesen kann....
Gespeichert

Nobody is perfect but Nobody is perfect
SiRo
Newbie
*
Beiträge: 39


174263400
Profil anzeigen
« Antwort #11 am: März 30, 2009, 10:39:02 »

Gut ich versuchs dann erstmal ohne hilfe weiter zu kommen  wenn es nicht klappt weis ich ja wo ich euch/dich finde ^^
Gespeichert

Nobody is perfect but Nobody is perfect
paff
Administrator
Hero Member
*****
Beiträge: 820


439627146
Profil anzeigen WWW
« Antwort #12 am: März 30, 2009, 10:49:26 »

Gut ich versuchs dann erstmal ohne hilfe weiter zu kommen  wenn es nicht klappt weis ich ja wo ich euch/dich finde ^^

Alles Klar

Setze den Thread auf gelöst
Gespeichert

Follow RegioGraph on Twitter
http://twitter.com/regiograph
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2007, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS