[ stefann127 @ 23.12.2011. 11:07 ] @
Zamolio bih za jedno objašnjenje, tema je stara, ali nailazim na grešku.
Imam sledeći problem: U jednom workbook NIS_prazan.xls imam dva Sheeta, nazivi "NIS_izvestaj" i "kopiranje" i potrebno mi je kopiranje opsega A1:K186 iz sheet "kopiranje" i Paste special as Value u "NIS_izvestaj" u opseg A14:K....
Koristim ovaj Code

Code:
Sub CopytoNIS()
Dim ws1 As Worksheet, ws2 As Worksheet
'Saved workbook will have extension like Workbooks("Book1.xls")
Set ws1 = Workbooks("NIS_prazan").Sheets("kopirati")
Set ws2 = Workbooks("NIS_prazan").Sheets("NIS_izvestaj")

ws1.Range("A1:K100").Copy
ws2.Range("A14").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub


prijavljuje se greška 400 i na Help "Run time error 1004".

Da li mogu ovaj Code koristiti i za Copy Paste Value kada imam da kopiram iz jednog wbook u drugi.
Hvala unapred

[Edit: Dodati tagovi]

[Ovu poruku je menjao 3okc dana 23.12.2011. u 13:16 GMT+1]
[ 3okc @ 23.12.2011. 12:14 ] @
Citat:
stefann127: ... imam dva Sheeta, nazivi "NIS_izvestaj" i "kopiranje" ...


Možda je problem što se u programu referenciraju "NIS_izvestaj" i "kopirati".

Što se tiče tvog pitanja, da li će ti program obaviti kopiranje i iz dokumenta u dokument (tj radni list), jedini način da ti odgovorimo je da uzmemo to parče koda i ispitamo ga na dva dokumenta. Ne vidim zašto se ne bi u to sam uverio, možda ćeš nešto naučiti.
[ stefann127 @ 23.12.2011. 12:38 ] @
3okc,


radio sam sa ovim


Code:

Sub CopyNIS()
Dim ws1 as Worksheet, ws2 as Worksheet

'Saved workbook will have extension like Workbooks("Book1.xls")
Set ws1 = Workbooks("Book1").Sheets("Sheet1")
Set ws2 = Workbooks("Book2").Sheets("Sheet1")

ws1.Range("A1:B10").Copy
ws2.Range("A1").PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub


na novootvorenim Wbook1 i Wbook2 i funcioniše.
Probao sam i Copy iz Sheet1 u Sheet2, isti wbook i funkcioniše.

Referencirao sam imena wbook i Sheets kako je meni odgovaralo i "ničevo".
Imaš li neki predlog? Ili neko drugi?


poz

[ 3okc @ 23.12.2011. 13:45 ] @
Citat:
stefann127: na novootvorenim Wbook1 i Wbook2 i funcioniše


Naravno da funkcioniše kada radiš sa novootvorenim jer je i primer koji koristiš, izvorno tako zamišljen: Book1 i Book2 su generička imena radnih listova koji *još uvek nisu snimljeni* pa tako još uvek *nemaju ekstenziju*. Čak ti je autor u komentaru skrenuo pažnju na razliku ako radiš sa snimljenim ('Saved workbook will have extension like Workbooks("Book1.xls")).
[ stefann127 @ 23.12.2011. 14:11 ] @
Imaš li neku ideju ili preporuku sa wbook koji već imaju ime?
Obišao sam mnogo foruma, ali nisam našao ni približno slično. Većina slučajeva je radila sa uslovima, ovo je bezuslovno obično kopiranje i Paste Specal.
Pokušaj mi bar preporučiti nešto.
Hvala unapred
[ p.djole @ 23.12.2011. 14:53 ] @
prikaci fajl pa da resimo
[ stefann127 @ 23.12.2011. 15:08 ] @
Fajl prikačen.
Samo bih ponovio, u Sheetu kopirati je mesečni izveštaj o potrošnji.
Kada se kopira u NIS_izvestaj kao Paste Special as Value, treba još prekopirati kolonu N preko kolone C i posle se šalje izveštaj svakom.
Hvala zainteresovanima da pomognu.

pozdrav
[ 3okc @ 23.12.2011. 15:46 ] @
Citat:
stefann127: Imaš li neku ideju ili preporuku sa wbook koji već imaju ime?


Mislio sam da je previše očigledno da bih tu išta "preporučivao".. Puno ime se sastoji od imena koje je sa ekstenzijom, dakle, navedi ime - ma koje ono bilo - i ekstenziju pod kojom si snimio.

Dakle, na tvom primeru, to bi proizvelo ovo:

Code:
Sub CopytoNIS()
Dim ws1 As Worksheet
Dim ws2 As Worksheet

    Set ws1 = Workbooks("NIS_prazan.xls").Sheets("kopirati")
    Set ws2 = Workbooks("NIS_prazan.xls").Sheets("NIS_izvestaj")

    ws1.Range("A1:K100").Copy
    ws2.Range("A14").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub
[ 3okc @ 23.12.2011. 19:02 ] @
Proverio sam fajl, kod je ispravan - nije radio ali to je zato što je grešaka bilo na više strana.

Prvo, Korisničke funkcije i procedure uopšte moraju da se nalaze unutar modula.

Drugo, nisi na početku naveo kompletan opis greške: jeste Runtime 1004 ali je u nastavku navedeno i da opseg u koji hoćeš da "nalepiš" podatke ne odgovara po dimenzijama onom iskopiranom. Ovo je greška koja nije specifična za VBA, isto bi ti prijavilo i kada bi pokušao sa C/P. Razlog za ovo su spojene ćelije na odredištu.

Ubacio sam alternativnu proceduru kojom možeš preneti podatke i bez korišćenja Clipboard memorije tj bez kopiranja, naime, prosto dodeliš vrednost jednog opsega drugom.

Code:
Sub Copy_bezCopy()
Dim ws1 As Worksheet
Dim ws2 As Worksheet

    Set ws1 = Workbooks("NIS ES2.xls").Sheets("kopirati")
    Set ws2 = Workbooks("NIS ES2.xls").Sheets("NIS_izvestaj")

    ws2.Range("A14").Resize(Range("A1:K100").Rows.Count, Range("A1:K100").Columns.Count).Value = _
        ws1.Range("A1:K100").Value
End Sub
[ mick_bg @ 12.07.2019. 13:48 ] @
Pozdrav svima.

Da ne otvaram novu temu jer mislim da pitanje pripada upravo ovoj.

Elem, interesuje me kako da iskopiram sve redove u Excelu koji sadrže jedan kriterijum (primera radi neko lično ime, u drugi Excel dokument ili Sheet) a da ne idem "pešački" tj. putem opcije Find All, pa onda copy-paste red po red u novi dokument tj. novi Sheet???

Unapred hvala.
[ Jpeca @ 12.07.2019. 15:02 ] @
Ako imaš sređenu tabelu (bez praznih redova/kolona), filtriraj po tom kriterijumu pa jednostavno Copy - Paste.
[ mick_bg @ 12.07.2019. 16:59 ] @
A kako mogu to da uradim? Početnik sam u Excelu.
[ mjanjic @ 12.07.2019. 20:30 ] @
Ima odavno celo Help na srpskom za Ofice.
https://support.office.com/sr-...5d-2a90-4610-a6ae-2e545c4a4654
[ mick_bg @ 12.07.2019. 20:55 ] @
Snašao sam se uz pomoć opcije "Sort & Filter (Filter)". Hvala svima na odgovorima, a naročito Jpeci.
Sve najbolje.

[Ovu poruku je menjao mick_bg dana 12.07.2019. u 22:43 GMT+1]