Search  
Thursday, May 24, 2012 ..:: Forum ::.. Register  Login
 Forum Minimize
Pentru a putea posta mesaje trebuie să vă înregistraţi.
Notă: Mesajele cu conţinut jignitor sau ilegal (inclusiv cereri de soft piratat) nu sunt acceptate şi vor fi şterse imediat .

Pentru a primi raspunsuri rapide si corecte, scrieti in mesaj ce intentionati sa faceti, ce mesaj de eroare primiti, in ce context si in urma caror actiuni. De asemenea, mentionati versiunea de FoxPro in care lucrati!
Dacă nu specificați versiunea, se consideră VFP 9.0 SP2.

SearchForum Home
  Visual FoxPro  Office Automation  Functia COPY SP...
 Functia COPY SPECIAL VALUES
 
 10/27/2008 11:33:47 AM
User is offlineted
7 posts


Functia COPY SPECIAL VALUES
 (Romania)

Salutare tuturor.

Nu reusesc sa copiez cu functia copy-special-values. Desi am incercat mai multe variante, nu se leaga nimic

Exemplu:

x2='W'+TRANSFORM(WEEK(DATE())-2)
loExcel1= newobject("excel.application")
loExcel1.Workbooks.Open( "c:\cr11018\CR11018_VOCE.xls")
loSheet= loExcel1.ActiveSheet.Range("F6:F14").Copy
loSheet=loExcel1.ActiveSheet.Range("B51:R59").FIND("&x2").SELECT

*variante incercate:

loSheet=loExcel1.ActiveSheet.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

loSheet=loExcel1.ActiveSheet.PasteSpecial xlPasteValues

loSheet=loExcel1.ActiveSheet.PasteSpecial XlPasteType=xlPasteValues

Orice sugestie este binevenita. Multumesc.

 10/27/2008 12:52:28 PM
User is offlineDaniel Buduru
2334 posts
1st




Re: Functia COPY SPECIAL VALUES
 (N/A) Modified By Daniel Buduru  on 10/27/2008 1:52:54 PM)
 ted wrote

Salutare tuturor.

Nu reusesc sa copiez cu functia copy-special-values. Desi am incercat mai multe variante, nu se leaga nimic

Exemplu:

x2='W'+TRANSFORM(WEEK(DATE())-2)
loExcel1= newobject("excel.application")
loExcel1.Workbooks.Open( "c:\cr11018\CR11018_VOCE.xls")
loSheet= loExcel1.ActiveSheet.Range("F6:F14").Copy
loSheet=loExcel1.ActiveSheet.Range("B51:R59").FIND("&x2").SELECT

*variante incercate:

loSheet=loExcel1.ActiveSheet.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

loSheet=loExcel1.ActiveSheet.PasteSpecial xlPasteValues

loSheet=loExcel1.ActiveSheet.PasteSpecial XlPasteType=xlPasteValues

Orice sugestie este binevenita. Multumesc.



Daca am inteles bine, vrei sa copiezi continutul zonei F6:F14 intro alta zona. Nu am excel instalat aici si nu pot testa codul, dar ar trebui sa mearga:

x2='W'+TRANSFORM(WEEK(DATE())-2)
loExcel1= newobject("excel.application")
loExcel1.Workbooks.Open( "c:\cr11018\CR11018_VOCE.xls")
loSheet= loExcel1.ActiveSheet
loSheet.Range("F6:F14").Copy
loSel=loSheet.Range("B51:R59").FIND(x2) &&nu ai nevoie de macrosubstitutie aici
IF vartype(loSel)="O"
   lcAddresss=loSel.Address
   loSheet.Range('B51:R59').PasteSpecial(lcAddress)
Endif

Atentie cand preiei codul din Object Browser sau din macro: sintaxa este cea pentru Visual Basic. Cand transpui in VFP, argumentele functiilor se trec intre paranteze, elimini atribuirea intre paranteze si pastrezi doar valoarea si ordinea parametrilor.
O parte dintre functii sunt de fapt comenzi, iar valoarea returnata este true sau false, indicand succesul sau esecul comenzii, si nu rezultatul ei. Ca atare, loSheet.range('F6:f14').Copy nu returneaza ce se gaseste in clipboard, ci doar true sau false.
De asemenea, ai redefinit loSheet de mai multe ori, si nu stiu ce sens ii dai pana la urma. Conform unor reguli de denumire a variabilelor, loSheet este o variabila locala (l), de tip obiect (o) si refera o pagina din workbook (Sheet). Atribuirile pe care i le-ai dat nu au insa nici o legatura cu asta. Nu este o greseala din punct de vedere al sintaxei VFP, dar face codul greu de urmarit.
Valorile constantelor excel referite in functii si comenzi le gasesti aici: 

http://techsupt.winbatch.com/ts/T000001033005F9.html


Daniel Buduru
 10/27/2008 1:55:04 PM
User is offlineted
7 posts


Re: Functia COPY SPECIAL VALUES
 (Romania)

Va multumesc mult pentru bunavointa de care dati dovada domnule Buduru, m-a luminat explicatia dumneavoastra dar nu indeajuns pentru intelegerea mea (sunt in faza in care descifrez tainele VBA), astfel incat la exemplul dat de dv. programul imi da urmatoarea eroare: "Variable 'LCADDRESS' is not found".

 

 10/27/2008 2:00:24 PM
User is offlineDaniel Buduru
2334 posts
1st




Re: Functia COPY SPECIAL VALUES
 (N/A)
 ted wrote

Va multumesc mult pentru bunavointa de care dati dovada domnule Buduru, m-a luminat explicatia dumneavoastra dar nu indeajuns pentru intelegerea mea (sunt in faza in care descifrez tainele VBA), astfel incat la exemplul dat de dv. programul imi da urmatoarea eroare: "Variable 'LCADDRESS' is not found".

 

E greseala mea,  in prima linie lcAddress e scris cu 3 s (iar codul nu l-am testat ...):

IF vartype(loSel)="O"
   lcAddresss=loSel.Address
   loSheet.Range('B51:R59').PasteSpecial(lcAddress)
Endif

Corect este asa:

IF vartype(loSel)="O"
   lcAddress=loSel.Address
   loSheet.Range('B51:R59').PasteSpecial(lcAddress)
Endif




Daniel Buduru
 10/27/2008 2:29:39 PM
User is offlineted
7 posts


Re: Functia COPY SPECIAL VALUES
 (Romania)

O fi greseala dv. dar este si ... neatentia mea, puteam sa-mi dau si eu seama ca este un "s" in plus. Dar si asa primesc pe linia de comanda "loSheet.Range("B51:R59").PasteSpecial(lcAddress)" eroarea: "OLE IDispatch exception code 0 from Microsoft Excel:Unable to get the PasteSpecial property of the Range class.."

 10/27/2008 2:49:25 PM
User is offlineDaniel Buduru
2334 posts
1st




Re: Functia COPY SPECIAL VALUES
 (N/A)
 ted wrote

 "loSheet.Range("B51:R59").PasteSpecial(lcAddress)" eroarea: "OLE IDispatch exception code 0 from Microsoft Excel:Unable to get the PasteSpecial property of the Range class.."


Nu am excel instalat si nu am cum sa fac un test.
Incearca sa dai comenzile rand pe rand, de la inceput, in fereastra de comenzi (rand pe rand si nu selectat si execute selection, ca sa se creeze variabilele public).
Apoi, cand ajungi la PasteSpecial, vezi in cu InteliSense ce parametri iti propune excel - vor fi in concordanta cu tipul datelor care exista deja in clipboard. Pentru asta, scrie linia din nou, si Intelisense se va activa automat.
Posteaza ce anume iti da InteliSenese, daca nu reusesti sa faci paste.

Daniel Buduru
 10/27/2008 3:07:38 PM
User is offlineted
7 posts


Re: Functia COPY SPECIAL VALUES
 (Romania)
Multumesc pentru sfaturi.Voi incerca si ultima varianta propusa, nu credeam sa-mi dea atata bataie de cap o comanda aparent banala.
 10/27/2008 3:08:43 PM
User is offlineDaniel Buduru
2334 posts
1st




Re: Functia COPY SPECIAL VALUES
 (N/A)
Gasesti aici functia PasteSpecial, cu exemple.
http://msdn.microsoft.com/en-us/library/aa195818.aspx
Constantele le gasesti in link-ul anterior.

With Worksheets("Sheet1")
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial Operation:=xlPasteSpecialOperationAdd
End With

aici ai valoriel constantelor definite prntru vfp: http://fox.wikis.com/wc.dll?Wiki~ExcelConstants~VFP 
in VFP, va arata asa

#DEFINE xlPasteAll -4104

#DEFINE xlPasteAllExceptBorders 7

#DEFINE xlPasteColumnWidths 8

#DEFINE xlPasteComments -4144

#DEFINE xlPasteFormats -4122

#DEFINE xlPasteFormulas -4123

#DEFINE xlPasteFormulasAndNumberFormats 11

#DEFINE xlPasteSpecialOperationAdd 2

#DEFINE xlPasteSpecialOperationDivide 5

#DEFINE xlPasteSpecialOperationMultiply 4

#DEFINE xlPasteSpecialOperationNone -4142

#DEFINE xlPasteSpecialOperationSubtract 3

#DEFINE xlPasteValidation 6

#DEFINE xlPasteValues -4163

#DEFINE xlPasteValuesAndNumberFormats 12

 
With Worksheets("Sheet1")
.Range("C1:C5").Copy
.Range("D1:D5").PasteSpecial(xlPasteSpecialOperationAdd)
EndWith



Daniel Buduru
 10/27/2008 4:16:10 PM
User is offlineDaniel Buduru
2334 posts
1st




Re: Functia COPY SPECIAL VALUES
 (N/A)

Asa ar trebui sa mearga:

#DEFINE xlPasteAll -4104
#DEFINE xlPasteAllExceptBorders 7
#DEFINE xlPasteColumnWidths 8
#DEFINE xlPasteComments -4144
#DEFINE xlPasteFormats -4122
#DEFINE xlPasteFormulas -4123
#DEFINE xlPasteFormulasAndNumberFormats 11
#DEFINE xlPasteSpecialOperationAdd 2
#DEFINE xlPasteSpecialOperationDivide 5
#DEFINE xlPasteSpecialOperationMultiply 4
#DEFINE xlPasteSpecialOperationNone -4142
#DEFINE xlPasteSpecialOperationSubtract 3
#DEFINE xlPasteValidation 6
#DEFINE xlPasteValues -4163
#DEFINE xlPasteValuesAndNumberFormats 12

x2='W'+TRANSFORM(WEEK(DATE())-2)
loExcel1= newobject("excel.application")
loExcel1.Workbooks.Open( "c:\cr11018\CR11018_VOCE.xls")
loSheet= loExcel1.ActiveSheet
loSheet.Range("F6:F14").Copy
loSel=loSheet.Range("B51:R59").FIND(x2)
IF vartype(loSel)="O"
   loSheet.Range(
loSel.Address).PasteSpecial(xlPasteValues)
Endif

Ramane sa alegi formatul care iti trebuie



Daniel Buduru
  Visual FoxPro  Office Automation  Functia COPY SP...

Search  Forum Home         

 Google Ads Minimize

    

Copyright 2002-2010 Profox   Terms Of Use  Privacy Statement