Citavi-Kategorien mittels Excel-Import-Makro (CIM007) verändern
Liebes Citavi-Team,
wie schon in einem älteren Beitrag erwähnt, bin ich ein sehr großer Fan des Citavi-Makros CIM007. Es erlaubt mir Informationen von Referenzen (in Textform/als Excel-Datei) außerhalb Citavis zu verarbeiten und dann wieder einzuspeisen.
(Fiktives Beispiel: Ich exportiere die Tabellenansicht eines Citavi-Projekts als Excel-Datei, führe irgendeine Formatierung aller Abstracts durch und speichere das Ergebnis in eine neue Spalte der Excel-Datei. Dann nutze ich das CIM007-Makro um die formatierten Abstracts in das Citavi-Projekt zu importieren und die alten zu ersetzen.)
Die Möglichkeiten, die durch dieses Makro entstehen sind sehr groß, da der Excel-Zwischenschritt im Endeffekt eine Schnittstelle zu Software wie auch R herstellt.
Nun also meine Frage:
Ein Import von Text in "einfache" Citavi-Felder wie eben Abstract, die Freitextfelder, usw. funktioniert wunderbar über ReferencePropertyId.Abstract, ReferencePropertyId.CustomField1 usw. und die parentReference.SetValue Funktion wie unten gezeigt.
Ein Import in die Citavi-Kategorien ist aber anscheinend nicht ohne weiteres möglich. Zwar kann ich ja problemlos über die Tabellenansicht eine Kategorien-Spalte exportieren, welche dann je Referenz eben Einträge wie "1 Kategorie_A" oder "1 Kategorie_A; 2 Kategorie_B" enthält, der re-import dieser Spalte gelingt mir aber aktuell nicht.
Mir ist schon klar, dass das Kategoriensystem bzw. die Wissenselemente in Citavi anders/komplexer gehandhabt werden als die "einfachen" Textfelder und, dass deshalb der derzeitige Ansatz
parentReference.SetValue(targetField[j], stringtargetField[j]);mit gutem Grund nicht funktioniert. Ich frage mich aber ob ich die Funktion nicht durch eine Anpassung doch so umschreiben könnte, dass die Values für das Feld Category eben so geändert werden, dass Citavi es versteht.
Lieber Paul,
das Problem hier ist, dass die Categories-Eigenschaft eines Titels) selbst eine Aufzählung ist. Sie müssten also zunächst den Feldinhalt anhand des Trennzeichens z.B. mit string.Split() aufteilen.
Dann wird es schwierig, weil Ihnen die Hierarchie-Information im Prinzip fehlt. Wenn das Kategoriensystem bereits vollständig vorliegt, können Sie im Prinzip aus mit einer LINQ-Abfrage dann für jedes Element des Arrays die entsprechende Kategorie aus project.AllCategories extrahieren und dem Titel zuweisen.
Hilft das weiter?
Viele Grüße
Sebastian
Lieber Paul,
das Problem hier ist, dass die Categories-Eigenschaft eines Titels) selbst eine Aufzählung ist. Sie müssten also zunächst den Feldinhalt anhand des Trennzeichens z.B. mit string.Split() aufteilen.
Dann wird es schwierig, weil Ihnen die Hierarchie-Information im Prinzip fehlt. Wenn das Kategoriensystem bereits vollständig vorliegt, können Sie im Prinzip aus mit einer LINQ-Abfrage dann für jedes Element des Arrays die entsprechende Kategorie aus project.AllCategories extrahieren und dem Titel zuweisen.
Hilft das weiter?
Viele Grüße
Sebastian
Diese Diskussion wurde geschlossen. Bitte erstellen Sie bei Bedarf einen neuen Beitrag.