Autor Thema: Export in Excel  (Gelesen 5564 mal)

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Export in Excel
« am: 12.08.10 - 09:14:35 »
Hallo Forum,

ich versuche eine Notes Ansicht in Excel zu exportieren. Als Vorlage hab ich das hier im Forum existierende Script genommen.
Dieses Script habe ich soweit erweitert, das es nur Daten von einem bestimmten User exportiert.

Läuft auch alles wunderbar, nur sobald bis ein Textfeld zwei Werte enthält kommt ein "Type Mismatch".

Beim Debug ist mir aufgefallen, das unter VIEWENTRY.COLUMNVALUES bei zwei Werten, bei
  • "User1,User2" steht und dann der Type Mismatch kommt.


Was muss ich ändern das einfach die beiden Werte exportiert werden?
Danke

Script:
.
.
tmp1 = ws.Prompt (PROMPT_OKCANCELEDIT, _
  "Bitte Koordinator eingeben", _
  "Bitte nur Nachnamen eingeben")
.
.
Set viewentry = vc.GetFirstEntry()
   Do While Not (viewentry Is Nothing)
      Do While (viewentry.ColumnValues(0) = tmp1) Hier kommt der Type mismatch
      For iCols=1 To 17
.
.

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Export in Excel
« Antwort #1 am: 12.08.10 - 09:20:17 »
Na da wird die erste Spalte Deiner View keinen Text (String) enthalten, sondern ein Datum, einen numerischen Wert, ....
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #2 am: 12.08.10 - 09:38:42 »
Hallo,

die erste Spalte im View enthält nur Text. Ich habe die Ausgabe vom Debug angehängt.

Gruß

Offline BMT216A

  • Junior Mitglied
  • **
  • Beiträge: 57
  • Geschlecht: Männlich
  • Wodka-Martini: Geschüttelt, nicht gerührt!
Re: Export in Excel
« Antwort #3 am: 12.08.10 - 10:32:00 »
Versuch mal, nur den ersten Wert des Feldes zu holen?

Feldname (0)

Vielleicht geht es so

Wenn man nicht spürt, dass man lebt, wird das Leben sinnlos.

-------------------------------------------------------------------------------------

Ich traue jedem. Ich traue nur nicht dem Teufel, der in jedem steckt.

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #4 am: 12.08.10 - 10:40:50 »
Ich hole den ersten Wert des Feldes mit Do While (viewentry.ColumnValues(0) = tmp1).

Aber das funktioniert nur solange ein Wert im View angezeigt wird.

« Letzte Änderung: 12.08.10 - 10:47:37 von chock »

Offline Kadlec

  • Senior Mitglied
  • ****
  • Beiträge: 489
  • Geschlecht: Männlich
  • Ich liebe dieses Forum!
Re: Export in Excel
« Antwort #5 am: 12.08.10 - 12:37:32 »
Das liegt nicht an den Werten aus der Spalte sondern an dem Vergleichswert tmp1.
Dieser (ws.Prompt) ist vom Typ Variant während der Wert aus der Spalte ein String ist.

Boris

Driri

  • Gast
Re: Export in Excel
« Antwort #6 am: 12.08.10 - 12:42:21 »
Zitat
Ich hole den ersten Wert des Feldes mit Do While (viewentry.ColumnValues(0) = tmp1).

Aber das funktioniert nur solange ein Wert im View angezeigt wird.

Wenn ich mir den Screenshot anschaue, dann bekommst Du so aber nicht einen String, sondern einen Array zurück. In dem zweiten Beispie, wo auch der Fehler auftritt, sieht man ja im Debugger-Fenster, daß ColumnValues(0) zwei Elemente enthält.

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #7 am: 12.08.10 - 13:18:33 »
Hallo,

nur wie bekomme ich die Werte aus dem Array? Müßte er nicht wenn ich auf das ColumnValues[0] zugreife beide Elemente nehmen?

Ich habe mal versucht den ersten Wert des Arrays zu bekommen -->

If IsArray(viewentry.ColumnValues(0)) Then
      x = ( UCase$(viewentry.ColumnValues(0,0)))
      'Else
      x = UCase$(viewentry.ColumnValues(0))
      'End IF

Dort kommt der Fehler: Worng number of arry subscripts

« Letzte Änderung: 12.08.10 - 13:44:14 von chock »

Driri

  • Gast
Re: Export in Excel
« Antwort #8 am: 12.08.10 - 14:05:04 »
Versuchs mal mit (viewentry.ColumnValue(0))(0)

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #9 am: 12.08.10 - 14:14:55 »
Hallo,

diese Syntax nimmt der Designer nicht an. Schade.

Gruß
« Letzte Änderung: 12.08.10 - 15:12:52 von chock »

Driri

  • Gast
Re: Export in Excel
« Antwort #10 am: 12.08.10 - 14:53:25 »
Ich habe zugegebenermaßen noch nicht viel mit direktem Zugriff auf Spaltenwerte gearbeitet.

Sonst weis doch den Inhalt von viewentry.ColumnValues(0) erstmal in eine Variant. Dann solltest Du da eigentlich drüber rankommen.

Dim spalte As Variant
...
spalte = viewentry.ColumnValues(0)

If IsArray(spalte) Then
   x = spalte(0)
Else
   x = spalte
End If
...

botschi

  • Gast
Re: Export in Excel
« Antwort #11 am: 12.08.10 - 14:55:09 »
Oder mal mit der Spalte spielen  >:D
Also ich meine natürlich die Eigenschaften der Spalte ändern. "Mherfachwerte getrennt anzeigen", sortieren.

Ich muss aber auch gestehen, ich verstehe es immer noch nicht ganz...
Mal gehts, mal nicht, dann wieder nicht wenn die Spalte keinen Wert anzeigt, den Screenshot verstehe ich auch nicht...

Matthias

botschi

  • Gast
Re: Export in Excel
« Antwort #12 am: 12.08.10 - 15:01:10 »
Aber warum machst Du es denn auch mit view.entry? Musst Du das unbedingt so machen?
Damit
Code
Dim ws As New NotesUIWorkspace
	Dim View As NotesView
	Dim uiview As NotesUIView
	
	Set uiview = ws.CurrentView
	Dim ndoc As NotesDocument
	
	Set View = db.GetView(uiview.ViewName)'("People")
	Set doc = view.GetFirstDocument
	If doc Is Nothing Then
		Msgbox "Keine Bestellungen"
		Exit Sub
	End If
und dann mit
Code
xlsheet.Cells(gvZeile, 1).Value = doc.bestellnummer(0) ' "Vorname"
	xlsheet.Cells(gvZeile, 2).Value = doc.firma(0) '"Nachname"
	xlsheet.Cells(gvZeile, 3).Value = doc.projektname(0) '"2. Vorname"
	xlsheet.Cells(gvZeile, 4).Value = doc.projektnr(0) '"Name"
	xlsheet.Cells(gvZeile, 5).Value = doc.projektleiter(0) '"Rufname"
	xlsheet.Cells(gvZeile, 6).Value = doc.ansprechpartner(0) '"E-Mail-Adresse"
	xlsheet.Cells(gvZeile, 7).Value = doc.kst(0) '"Straße (privat)"
usw
gehts doch zur Not auch...

Matthias

Offline m3

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.102
  • Geschlecht: Männlich
  • Non ex transverso sed deorsum!
    • leyrers online pamphlet
Re: Export in Excel
« Antwort #13 am: 12.08.10 - 15:03:02 »
ViewEntry ist schneller, als der Zugriff auds Doc.
HTH
m³ aka. Martin -- leyrers online pamphlet | LEYON - All things Lotus (IBM Collaborations Solutions)

All programs evolve until they can send email.
Except Microsoft Exchange.
    - Memorable Quotes from Alt.Sysadmin.Recovery

"Lotus Notes ist wie ein Badezimmer, geht ohne Kacheln, aber nicht so gut." -- Peter Klett

"If there isn't at least a handful of solutions for any given problem, it isn't IBM"™ - @notessensai

botschi

  • Gast
Re: Export in Excel
« Antwort #14 am: 12.08.10 - 15:08:04 »
Ja, am Beckenrand ertrunken ist auch ertrunken  ;D
Oder in "Schönheit sterben"  ;D

8 Stunden probieren und nicht ans Ziel kommen oder 1 Stunde umschreiben und fertig sein?
Das goldene Abzeichen bekommen und/oder damit Geld verdienen oder einfach fertig werden?
Ist das eine einmalige Aktion oder eine wiederkehrende?
Wird das auf 10 oder 10.000 Doks ausgeführt?

Das kann natürlich nur "Chock" entscheiden  ;D

Matthias
« Letzte Änderung: 12.08.10 - 15:12:38 von botschi »

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #15 am: 12.08.10 - 15:51:35 »
Sonst weis doch den Inhalt von viewentry.ColumnValues(0) erstmal in eine Variant. Dann solltest Du da eigentlich drüber rankommen.

Dim spalte As Variant
...
spalte = viewentry.ColumnValues(0)

If IsArray(spalte) Then
   x = spalte(0)
Else
   x = spalte
End If
...

Das ist schon der richtige Weg. Wenn man allerdings tatsächlich erwartet, dass da mal ein Array und mal ein skalarer Wert zurückgeliefert wird, so wäre vor dem jeweiligen Gebrauch des Variants dieses zu de-initialisieren (Erase) - sonst gibt es gleich wieder ein Type mismatch.

Bernhard

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #16 am: 12.08.10 - 16:58:49 »
Oder mal mit der Spalte spielen  >:D
Also ich meine natürlich die Eigenschaften der Spalte ändern. "Mherfachwerte getrennt anzeigen", sortieren.

Ich muss aber auch gestehen, ich verstehe es immer noch nicht ganz...
Mal gehts, mal nicht, dann wieder nicht wenn die Spalte keinen Wert anzeigt, den Screenshot verstehe ich auch nicht...

Matthias

Mit der Spalte habe ich schon gespielt, leider immer das selbe Ergebnis.

Es geht nur nicht, sobald ein Feld aus dem Dokument 2 Werte enthält. Dadurch funktioniert der Zugriff auf viewentry.ColumnValues[0] nicht mehr, weil automatisch ein Array entsteht. Siehe 2tes Bild.
Sonst funktioniert alles wunderbar.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #17 am: 12.08.10 - 17:01:43 »
Christian, folge Ingos Vorschlag (anders wird es nur umständlich). Aus den einschläigigen Quellen kannst Du Dir auch Excel-Exporter herunterladen und Dir mal den Code anschauen - Du wirst bei funktionierenden Lösungen genau das von Ingo angeführte finden.

HTH,
Bernhard

Offline chock

  • Senior Mitglied
  • ****
  • Beiträge: 337
  • Geschlecht: Männlich
Re: Export in Excel
« Antwort #18 am: 12.08.10 - 17:20:34 »
Christian, folge Ingos Vorschlag (anders wird es nur umständlich). Aus den einschläigigen Quellen kannst Du Dir auch Excel-Exporter herunterladen und Dir mal den Code anschauen - Du wirst bei funktionierenden Lösungen genau das von Ingo angeführte finden.

HTH,
Bernhard
Hallo Bernhard,

also mit Ingos Vorschlag funktioniert es:

If IsArray(viewentry.ColumnValues(0)) Then
                  a = viewentry.ColumnValues(0)
      Do While (a(0) = tmp1)
.
.
Else
   a = viewentry.ColumnValues(0)
      Do While (a = tmp1)

Das Problem was jetzt auftaucht ist, sobald er nun in der Do While Schleife bekomme ich den Wert von a nicht mehr umgesetzt. Ich glaube da muss ich Morgen nochmal schauen.

Driri

  • Gast
Re: Export in Excel
« Antwort #19 am: 13.08.10 - 08:19:37 »
Wieso denn Do...While ? Da reicht doch völlig ein If a(0) = tmp1 bzw. If a = tmp1.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz