Liebe ArcObjects-NutzerInnen,
hat schon mal jemand von euch VBA-Code aus ArcView 8.x-Vorlagen (*.mxt) nach ArcObjects 9.0 ueberfuehrt und hierfuer einen Tipp zur Automatisierung? Das Prozedere waere wie folgt:
1. Entferne aus allen Standard- und Klassen-Modulen der Vorlage die aufgefuehrten Bibliotheken (z. B. esriCore)
2. Ergaenze die neuen Bibliotheksnamen (z. B. esriCarto)
Von der ESRI-Hotline habe ich 2fach bedauerlicherweise nur die Antwort erhalten, dass - im Gegensatz zu VB, wo es ein entsprechendes AddIn gibt - fuer VBA leider kein Tool zur Verfuegung steht. Aber vielleicht hat bzw. weiss ja einer aus dieser Gemeinde ein Werkzeug, welches diesen Job erledigt. Meines Erachtens waere diese Aufgabe - nach dem Motto einer fuer alle - sehr gut bei ESRI aufgehoben.
Gruss
Uwe
hat schon mal jemand von euch VBA-Code aus ArcView 8.x-Vorlagen (*.mxt) nach ArcObjects 9.0 ueberfuehrt und hierfuer einen Tipp zur Automatisierung? Das Prozedere waere wie folgt:
1. Entferne aus allen Standard- und Klassen-Modulen der Vorlage die aufgefuehrten Bibliotheken (z. B. esriCore)
2. Ergaenze die neuen Bibliotheksnamen (z. B. esriCarto)
Von der ESRI-Hotline habe ich 2fach bedauerlicherweise nur die Antwort erhalten, dass - im Gegensatz zu VB, wo es ein entsprechendes AddIn gibt - fuer VBA leider kein Tool zur Verfuegung steht. Aber vielleicht hat bzw. weiss ja einer aus dieser Gemeinde ein Werkzeug, welches diesen Job erledigt. Meines Erachtens waere diese Aufgabe - nach dem Motto einer fuer alle - sehr gut bei ESRI aufgehoben.
Gruss
Uwe
- Anmelden oder Registieren, um Kommentare verfassen zu können
Gespeichert von Gast am Di., 15.02.2005 - 12:54
Permalinkda ich selbst kein AV 9 habe, verstehe ich evtl. nicht ganz, was Du machen willst. Geht es Dir darum, einen String im Code zu ersetzen, so etwa
alt: Dim pObj as esricore.object
neu: Dim pObj as esricarto.object
?
Viele Grüße
Jörg Ostendorp
Gespeichert von uwelangehh am Di., 15.02.2005 - 14:19
PermalinkJoop! Die Prozedur soll in allen Standard- und Klassen-Modulen zu allen wichtigen bzw. maximal allen ca. 3500 Klassen, Interfaces etc. automatisch die neuen Bibliotheksnamen ergaenzen (siehe dein Beispiel). Dazu benoetige ich:
Application.Document.VBProject.VBComponents.Item(i)
Nur, bevor ich den Rest dazuprogrammiere, wollte ich erst mal im Forum anklopfen, ob es so etwas schon gibt.
Gruss
Uwe
Gespeichert von Gast am Di., 15.02.2005 - 15:26
Permalinkwenn ich Dich tatsächlich richtig verstehe(?), ist das dazuprogrammieren doch schnell erledigt (fauler Hund ;-)). Ich würde mir einen UIButton in der normal.mxt erstellen mit folgender Prozedur im Rücken (bsp für 10 Bibliotheksnamen):
Public Sub AV8toAV9()
Dim vbc As VBIDE.VBComponent
Dim strArray(10, 2) As String
Dim str
Dim i As Long
Dim j As Long
'zu ersetzende Bibliotheken aufsammeln
strArray(0, 0) = "esricore"
strArray(0, 1) = "esricarto"
strArray(1, 0) = "irgendwas"
strArray(1, 1) = "irgendwas anderes"
'...
'Components durchlaufen
For Each vbc In VBE.VBProjects.Item(2).VBComponents 's.u.
'Codezeilen durchlaufen
For i = 1 To vbc.CodeModule.CountOfLines
str = vbc.CodeModule.Lines(i, 1)
'ggf. Stringteile gemäß Referenzarray ersetzen
For j = 0 To 9
str = Replace(str, strArray(j, 0), strArray(j, 1))
Next j
'Codezeile ersetzen
vbc.CodeModule.DeleteLines i, 1
vbc.CodeModule.InsertLines i, str
Next i
Next vbc
End Sub
Mit
"VBE.VBProjects.Item(2).VBComponents"
gehe ich mal davon aus, daß in den mxd-Dateien als erstes Projekt immer "Normal" und als zweites eben immer das zu bearbeitende/aktuelle Projekt erscheint. Dann müßte man nur noch einmalig den Bibliotheksarray vervollständigen, vielleicht noch einen kleinen Hourglass-Cursor dazupacken und könnte dann jede aktuell geöffnte mxd (nach erstellter Sicherheitskopie...) mit einem einzigen Klick migrieren.
Viele Grüße
Jörg Ostendorp
Gespeichert von uwelangehh am Di., 15.02.2005 - 15:53
Permalinkdanke fuer das Zauberwort:
"VBE.VBProjects.Item(2).VBComponents"
Diese Zeile habe ich noch gesucht.
Gruss
Uwe
P.S. fauler Hund ;-) : Kein Kommentar.