excel copy und paste

Einbindung von Office-Komponenten wie Word, Excel usw.

Moderator: Moderatoren

Antworten
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

excel copy und paste

Beitrag von Koverhage »

Hallo,

möchte in Excel was kopieren und einfügen was leider nicht klappt. Kann mir jemand sagen was ich falsch mache?
hier der Programmteil

Code: Alles auswählen

oBook:Worksheets(1):activate() // Activate sheet
  oSheet := oBook:Worksheets(1) // Shortcut
  oSheet2 := oBook:Worksheets(2) // Shortcut
  oSheet3 := oBook:Worksheets(3) // Shortcut
  
  oSheet3:Range("B36:R39"):Select()
  oExcel:Selection:Copy()
  oSheet3:Range("B40:R40"):Select()
  oExcel:Selection:Paste()
und bekomme folgende Fehlermeldung (egeal ob Select() oder Select)

------------------------------------------------------------------------------
FEHLERPROTOKOLL von "D:\wexe\le0.EXE" Datum: 02.10.2008 16:41:56

Xbase++ Version : Xbase++ (R) Version 1.90.331
Betriebssystem : Windows XP 05.01 Build 02600 Service Pack 3
------------------------------------------------------------------------------
oError:args :
-> VALTYPE: C VALUE: Select
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Die Select-Methode des Range-Objektes konnte nicht ausgefhrt werden.
oError:filename : NIL
oError:genCode : NIL
oError:operation : Select
oError:osCode : -2146827284
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Gruß
Klaus
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: excel copy und paste

Beitrag von Tom »

Ich mache das so, vielleicht hilft Dir das:

Code: Alles auswählen

oRange := oWorkSheet:Range(cRange)
oRange:Select()
Herzlich,
Tom
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: excel copy und paste

Beitrag von Koverhage »

Tom,

bis dahin funktioniert das, sehe auch in dem worksheet den markierten Bereich.
Jetzt scheitere ich beim Copy Befehl.

Code: Alles auswählen

  
  oSheet3:Select()
  oSheet3:Activate()
  oRange := oSheet3:Range("B36:R39")
  oRange:Select()
  oExcel:Selection:Copy()
Ergibt

Parameter hat falschen Typ
Cargo
AutomationObject:Copy(581)

Wenn ich stattdessen oRange:Selection:Copy() nehme

Dehler Automation/6500
Beschreibung: Unbekanner Name
Member-Variable ist f


Hier die Maroaufzeichnung für diese Aktion:

Code: Alles auswählen

Sub Makro1()
'
' Makro1 Makro
' Makro am 02.10.2008 von OK aufgezeichnet
'

'
    Sheets("Blatt3").Select
    ActiveWindow.SmallScroll Down:=21
    Range("B36:R39").Select
    Selection.Copy
    Range("B40:Q40").Select
    ActiveSheet.Paste
End Sub
 
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: excel copy und paste

Beitrag von Koverhage »

Habe folgendes gefunden

Allerdings geht's viel kürzer:
- Du kannst Zellen auch direkt kopieren via "Quelle.Copy Ziel"
- Activate's und Select's sind fast immer unnötig
- Du könntest Dir Verweise auf Mappen, Tabellen oder Ranges merken

Also z.B. sowas:

Dim src as range, dst as Range

Workbooks.Open Filename:=pfad + datei + ".xls"
set src = ActiveWorkBook.Worksheets(importsheet).Range("B3:I8")
set dst = ThisWorkBook.Worksheets("Tabelle1").Range("B16")
src.Copy dst


wenn ich das richtig verstehe müsste ich das so machen:

oSheet3:Select()
oSheet3:Activate()
oRangeFrom := oSheet3:Range("B36:R39")
oRangeTo := oSheet3:Range("B40")
oRangeTo:=oRangeFrom:Copy()

Aber auch hier bekomme ich den Fehler mit Cargo
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: excel copy und paste

Beitrag von Koverhage »

so das Rätsel ist gelöst.
Es ist noch einfacher wie gedacht.

Bereich auswählen und in Clipboard kopieren
oRange:=oSheet3:Range("B36:R39"):Copy

Neuen Bereich wählen und von Clipboard einfügen
oRange:oSheet3:Range("B40:R40")
oSheet3:Paste(oRange)

Eine Suche mit dem zusätzlichen Suchbegriff VFP kann sehr hilfreich sein ;-)
Gruß
Klaus
Antworten