Autor Thema: Excel copy Sheet + after:=  (Gelesen 3599 mal)

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Excel copy Sheet + after:=
« am: 31.08.06 - 08:39:09 »
Guten Morgen,

Kann mir bitte jemand weiterhelfen.
Ich hab das Problem, dass ich per Notes Script eine Excel-Dokument öffne und dann möchte ich das Tabellenblatt mehrmals (Anzahl vorerst unbekannt) kopieren.

Der normale Befehl ist ja im VBA:

Sheets("Tabelle1").Select
Sheets("Tabelle1").Copy After:=Sheets(1)

Nun ist aber das Problem das ja := im Notes nicht geht.

Wie kann ich jetzt ein bestehendes Blatt in diesem Exceldokument kopieren?

danke robert
« Letzte Änderung: 31.08.06 - 13:13:05 von robertpp »
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re: Excel copy Sheet + after:=
« Antwort #1 am: 31.08.06 - 09:06:20 »
Hier hat sich jemand die Mühe gemacht das schön zu beschreiben:

LDD: How to get around the ":=" that VB uses to set parameters in Lotus Notes

Andreas

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: Excel copy Sheet + after:=
« Antwort #2 am: 31.08.06 - 10:08:12 »
Hallo,

Danke Adreas, genau das hab ich gesucht.

Ich hab auch parallel weitergesucht und ebenfalls noch entdeckt, dass in der VBA Hilfe das so drinnen steht:

Code
Copy-Methode, wie sie auf die Objekte Chart, Charts, Sheets, Worksheet und Worksheets angewendet wird.

Kopiert das Blatt an eine andere Position in der Arbeitsmappe.

Ausdruck.Copy(Before, After)

Ausdruck   Erforderlich. Ein Ausdruck, der eines der o. a. Objekte zurückgibt.

Before  Optionaler Variant-Wert. Das Blatt, vor das dieses Blatt kopiert wird. Sie können Before nicht angeben, wenn Sie After angeben.

After   Optionaler Variant-Wert. Das Blatt, hinter das dieses Blatt kopiert wird. Sie können After nicht angeben, wenn Sie Before angegeben haben.

Anmerkung
Wenn Sie weder Before noch After angeben, erstellt Microsoft Excel eine neue Arbeitsmappe, die das kopierte Blatt enthält.

Dort wird es ebenfalls ohne ":=" beschireben und mit "()"

Es ist aber sinnvoll es so zu machen wie im Link beschrieben. Anders kann es nämlich zu Probleme kommen.

Danke und Gruss Robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: Excel copy Sheet + after:=
« Antwort #3 am: 31.08.06 - 12:16:22 »
Hallo,

Ich hab leider ein kleines Problem noch!!

Copy verhält sich nicht wie Add.

Kann mal bitte jemand das mit einem Agent ausprobieren:

Sub Initialize
   Dim xlApp As Variant
   Dim xlsheet As Variant
   Dim xlsheet1 As Variant
   Dim file As String
   
   file ="C:\temp\Dienstreiseliste.xls"
   
   Set xlApp = CreateObject("Excel.Application")
   xlApp.Visible = False
   xlApp.Visible = True
   xlApp.Workbooks.Open ( file )
   Set xlsheet = xlApp.ActiveWorkbook.Worksheets(1)   
   xlApp.ActiveWorkbook.Sheets("Tabelle1").Select
   
   Dim after As Variant
   Set after = xlApp.Workbooks(1).Worksheets(1)
   Set xlsheet1 = xlApp.worksheets(1).Copy(Null,after)
   
End Sub

Ich bekomme bei der roten Zeile immer ein "type mismatch".
Aber er kopiert trotzdem das erste Tabellenblatt und sogar richtig (danach)

Oder sieht jemand einen Fehler?
danke Robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Offline LN4ever

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 505
  • Geschlecht: Männlich
Re: Excel copy Sheet + after:=
« Antwort #4 am: 31.08.06 - 12:28:23 »
Was passiert denn, wenn du das NULL einfach wegläßt, also

Set xlsheet1 = xlApp.worksheets(1).Copy(,after)

Wenn du das NULL-Element brauchst, mußt du es deklarieren, also z.B.
Dim v_before as Variant
v_before=NULL

Set xlsheet1 = xlApp.worksheets(1).Copy(v_before,after)
Situs vilate in isse tabernit.

Glombi

  • Gast
Re: Excel copy Sheet + after:=
« Antwort #5 am: 31.08.06 - 12:32:29 »
Anstelle von

  Set xlsheet1 = xlApp.worksheets(1).Copy(Null,after)

ein


 Set xlsheet1 = xlApp.activeworkbook.worksheets.Copy(Null,after)


Andreas

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: Excel copy Sheet + after:=
« Antwort #6 am: 31.08.06 - 12:51:16 »
@Andreas:
Das hatte ich zuvor schon drinnen stehen und leider gleicher Effekt.


@LN4ever:
Ist das gleiche Ergebnis. Leider auch Fehler.

Habt ihr es bei euch testen können? Vielleicht geht es bei euch?

Mir kommt das nur sehr komisch vor warum er die Tabelle kopiert und anschließend kommt der Fehler!

Ich denke es liegt vielleicht an dem "Set xlsheet1 =" weil das "xlApp.activeworkbook.worksheets.Copy(Null,after)"
 macht er ja richtig.
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

Glombi

  • Gast
Re: Excel copy Sheet + after:=
« Antwort #7 am: 31.08.06 - 12:56:54 »
Mit

Call xlApp.activeworkbook.worksheets.Copy(Null,after)

gehts logischerweise. Wir rufen ja eine Methode auf und setzen kein Objekt.

Andreas

Offline robertpp

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 940
  • Geschlecht: Männlich
Re: Excel copy Sheet + after:=
« Antwort #8 am: 31.08.06 - 13:11:42 »
Hallo Andreas,

Ja das reicht mir dann auch.
Ans Call hab ich garnicht gedacht.
Setze in der Zeile danach einfach das xlssheet wieder:

   Set xlsheet = xlApp.ActiveWorkbook.ActiveSheet

danke ich hoffe das ich jetzt keine Probleme mehr bekomme.

danke robert
------------------------------------------------------------
1250 Notes User Client von 5.0.5 bis 6.5.4     WIN2000, XP
14 Notes Server von 6.5 bis 6.5.4 WIN2000, XP

32   Notes Server von 5.0.1 bis 6.5.4 in unserer Domain
323 Notes Server weltweit mit 38000 User in einem Adressbuch

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz