Hallo liebe VB-Paradise Community,
Ich beschäftige mich seit einiger Zeit mit Office-Automatisierung für Access 2007 und benutze als Referenz die Visual Basic for Applications Language Reference for Office 2010.
In einem Beispiel wird gezeigt wie man mithilfe der CreateObject-Funktion auf ActiveX-Komponenten zugreift.
Beim Googeln fällt (u.a. hier) auf, dass man als Parameter anscheinend auch .Net Framework -Komponenten benutzen kann, was bei mir auch super funktioniert.
Da die VBA-Standardbibliothek ja recht dünn angesiedelt ist, muss man für Standardapplikationen (Listen, diverse Bäume, Hashtables, Streams, Regexp, usw.) zwangsläufig diese Objekte benutzen. Leider gelingt es mir nicht richtig mit Objekten zu arbeiten, die polymorphes oder generisches (zB. System.Collections.Generics) Verhalten haben.
konkretes Beispiel für die Klasse StringBuilder :
Welche Objekte eignen sich überhaupt und warum könnte beim StringBuilder die Append-Methode nicht funktionieren?
Gruß, Chris
![:)](https://www.vb-paradise.de/wcf/images/smilies/smile.png)
Ich beschäftige mich seit einiger Zeit mit Office-Automatisierung für Access 2007 und benutze als Referenz die Visual Basic for Applications Language Reference for Office 2010.
In einem Beispiel wird gezeigt wie man mithilfe der CreateObject-Funktion auf ActiveX-Komponenten zugreift.
Beim Googeln fällt (u.a. hier) auf, dass man als Parameter anscheinend auch .Net Framework -Komponenten benutzen kann, was bei mir auch super funktioniert.
Da die VBA-Standardbibliothek ja recht dünn angesiedelt ist, muss man für Standardapplikationen (Listen, diverse Bäume, Hashtables, Streams, Regexp, usw.) zwangsläufig diese Objekte benutzen. Leider gelingt es mir nicht richtig mit Objekten zu arbeiten, die polymorphes oder generisches (zB. System.Collections.Generics) Verhalten haben.
konkretes Beispiel für die Klasse StringBuilder :
Visual Basic-Quellcode
- Public Function StringTest()
- Dim strb As Object, xbeliebig As Object
- Set strb = CreateObject("System.Text.StringBuilder")
- strb.AppendFormat "123123123", xbeliebig
- Debug.Print strb.ToString 'Ausgabe: 123123123
- strb.AppendFormat "{0}", "Text"
- Debug.Print strb.ToString 'Ausgabe: 123123123Text
- Debug.Print strb.MaxCapacity 'Ausgabe: 2147483647
- Debug.Print strb.length 'Ausgabe: 13
- Debug.Print strb.chars(0) 'Ausgabe: 49
- strb.Replace "123", "abc"
- Debug.Print strb.ToString 'Ausgabe: abcabcabcText
- strb.Append 49, 10
- Debug.Print strb.ToString 'Ausgabe: abcabcabcText1111111111
- 'Aber:
- strb.Append 97 'Ungültiger Prozeduraufruf oder ungültiges Argument (5)
- strb.Append "foo" 'Klasse unterstützt keine Automatisierung oder unterstützt erwartete Schnittstelle nicht (430)
- 'unter anderem:
- Dim q As Object
- Set q = CreateObject("System.Collections.Generic.Queue") 'Objekterstellung durch ActiveX-Komponente nicht möglich (429)
- Set q = CreateObject("System.Collections.Generic.Queue(Of Object)") 'Objekterstellung durch ActiveX-Komponente nicht möglich (429)
- End Function
Welche Objekte eignen sich überhaupt und warum könnte beim StringBuilder die Append-Methode nicht funktionieren?
![?(](https://www.vb-paradise.de/wcf/images/smilies/confused.png)
Gruß, Chris