Tomasz
Karowski
.NET contractor
providing
programming services
Tomasz
Gawęda
Kierownik Zakładu
Produkcyjnego
Temat: Makro - kopiowanie wybranych wierszy
A jak zapiszesz go jako xlsm to nie pomoże?
Tomasz
Karowski
.NET contractor
providing
programming services
Temat: Makro - kopiowanie wybranych wierszy
nie mogę kombinować z formatami bo jest to raport generowany, także format xls jest narzucony z góry, ale to w sumie pytałem już z takie ciekawości, bo nie jest to wymaganejeszcze raz dzięki za pomoc
Agata Grygoruk młodszy programista
Temat: Makro - kopiowanie wybranych wierszy
Witam serdecznie,Jestem tutaj nowa i bardzo proszę o pomoc. Jeżeli chodzi o makro to jestem raczej zielona. Próbowałam przekształcić różne znalezione makra w internecie z podobnym problemem jednak nic mi z tego nie wyszło.
Mam dwa pliki jeden to "raport1"drugi "raport2". Żeby oszczędzić czas pracownikom chciałam, żeby wpisując datę wizyty u danego klienta ("raport1") automatycznie kopiowała się do "raport2" w momencie wpisania nazwy tego klienta.
Przykładowo w kolumnie A "raport1" mamy nazwy klientów X, Y, Z itd. W kolumnie B wpisuje się datę wizyty i teraz chciałabym, żeby w momencie wpisania w "raport2" klienta X w kolumnie A zwracało mi w kolumnie B datę z kolumny B "raport1".
Jest w ogóle możliwe zrobienie czegoś takiego? Jeżeli nie da się tego zrobić w dwóch plikach mogę je połączyć w jeden i "raport1", i "raport2" będą wtedy osobnymi arkuszami.
Robert M. finanse i bankowosc
Temat: Makro - kopiowanie wybranych wierszy
Witam serdecznie,Potrzebuję pomocy w napisaniu makra które pomoże mi w pracy, a mianowicie:
w arkuszu dopisywane są pozycje w wierszach, chciałbym aby makro wyszukało ostatnią nie pustą komórkę w kolumnie A np. A15 i kopiowało cały wiersz z formatami i formułami do kolejnego pustego wiersza w tym wypadku A16.
Bardzo proszę o pomoc. Z góry dziękuję.
Bogdan
Gilarski
www.excelperfect.pl
Perfect And
Practical
Temat: Makro - kopiowanie wybranych wierszy
Poczytaj o tym jak znaleźć ostatni wiersz http://excelperfect.pl/?p=217Odnośnie kopiowania, to brak info z jakiego miejsca, jaki zakres jest kopiowany i w jakim arkuszu mają byc wyniki, zatem w przykładowym przypadku można zapisać tak
Arkusz1.Range("A10:D10").copy Arkusz2.Range("A"&wiersz)gdzie "wiersz" to zmienna określona przez "ostatni wiersz" +1, Arkusz1, Arkusz2 to nazwy kodowe arkuszy kopiowane z -> kopiowane do...
Łukasz
Kuchejda
Kontroler przepływu
materiałów
Temat: Makro - kopiowanie wybranych wierszy
Witam serdecznie Jestem nowy na tym forum przyciągnęło mnie tu makro napisane przez Pana Tomasza Gawęda, chciał bym zapytać autora bądź też innych forumowiczów jak zmodyfikować to podstawowe makro:Option Explicit
Sub dzialaj()
Dim ark As Worksheet, temp As Worksheet
Dim i As Integer
Set ark = Sheets("Arkusz1")
For i = 1 To ark.Range("d65536").End(xlUp).Row
If Not czyistnieje(ark.Cells(i, 4)) Then
Sheets.Add
Set temp = ActiveSheet
temp.Name = ark.Cells(i, 4)
temp.Move After:=Sheets(Sheets.Count)
Call esql(ark.Cells(i, 4), temp.Name)
End If
Next i
End Sub
Function esql(argument As String, arkusz As String)
Dim cn As Object, rs As Object
Dim nazwa As String, sqlstr As String
Dim ark As Worksheet
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
nazwa = ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & nazwa & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"""
sqlstr = "SELECT * FROM [Arkusz1$] WHERE F4 = '" & argument & "'"
Set rs = cn.Execute(sqlstr)
Set ark = ActiveWorkbook.Sheets(arkusz)
ark.Cells.ClearContents
ark.Range("a1").CopyFromRecordset rs
rs.Close
cn.Close
End Function
Function czyistnieje(nazwa As String) As Boolean
Dim ark As Worksheet
czyistnieje = False
For Each ark In ThisWorkbook.Worksheets
If ark.Name = nazwa Then czyistnieje = True
Next ark
End Function
tak aby po utworzeniu arkuszy na podstawie kolumny D po ponownym uruchomieniu dopisywało do nich nowe rekordy, które pojawiły się w arkuszu1. Na chwile obecną za każdym razem muszę usunąć powstałe arkusze i uruchomić makro ponownie. Drugie pytanie czy jest możliwość w jakiś sposób ograniczyć ilość kolumn kopiowanych, bądź wskazać które kolumny z danego wiersza mają być skopiowane ?? Jeśli ktoś był by w stanie mi pomóc będę bardzo wdzięczny. Dopiero zaczynam zabawę z VBA, więc prosił bym o ewentualne tłumaczenie jak dla laika
Sławek Kucharski Zarządzanie to pasja
Temat: Makro - kopiowanie wybranych wierszy
Witam i ja poproszę o pomoc bo to będzie moje pierwsze makro a wydaje mi się bardzo złożone. mam dwa pliki i potrzebuję kopiować dane z jednego do drugiego pod warunkiem że dane są przypisane w pliku źródłowym do tech samego pracownika a nie zawsze w tym samym wierszu
Oskar
Shon
Dodatki do Office
www.VBATools.pl
Temat: Makro - kopiowanie wybranych wierszy
kopiować dane z jednego do drugiego pod warunkiem że dane są przypisane w pliku źródłowym do tech samego pracownika a nie zawsze w tym samym wierszu
Sławku - jeśli ten plik, kieruje się jakąś zasadą to jest to możliwe. Na etapie twojej wypowiedzi ciężko określić sposób modyfikacji kodu, tak aby uwzględniał niewiadome. (Czyt bez załącznika lub próbki materiału nie obejdzie się).
Sławomir
Broda
VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...
Temat: Makro - kopiowanie wybranych wierszy
Łukasz K.:wstaw
Witam serdecznie Jestem nowy na tym forum przyciągnęło mnie tu makro napisane przez Pana Tomasza Gawęda, chciał bym zapytać autora bądź też innych forumowiczów jak zmodyfikować to podstawowe makro:
Option Explicit
Sub dzialaj()
Dim ark As Worksheet, temp As Worksheet
Dim i As Integer
Set ark = Sheets("Arkusz1")
For i = 1 To ark.Range("d65536").End(xlUp).Row
If Not czyistnieje(ark.Cells(i, 4)) Then
Sheets.Add
Set temp = ActiveSheet
temp.Name = ark.Cells(i, 4)
temp.Move After:=Sheets(Sheets.Count)
Call esql(ark.Cells(i, 4), temp.Name)
End If
Next i
End Sub
Function esql(argument As String, arkusz As String)
Dim cn As Object, rs As Object
Dim nazwa As String, sqlstr As String
Dim ark As Worksheet
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
nazwa = ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & nazwa & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"""
sqlstr = "SELECT * FROM [Arkusz1$] WHERE F4 = '" & argument & "'"
Set rs = cn.Execute(sqlstr)
Set ark = ActiveWorkbook.Sheets(arkusz)
ark.Cells.ClearContents
ark.Range("a1").CopyFromRecordset rs
rs.Close
cn.Close
End Function
Function czyistnieje(nazwa As String) As Boolean
Dim ark As Worksheet
czyistnieje = False
For Each ark In ThisWorkbook.Worksheets
If ark.Name = nazwa Then czyistnieje = True
Next ark
End Function
tak aby po utworzeniu arkuszy na podstawie kolumny D po ponownym uruchomieniu dopisywało do nich nowe rekordy, które pojawiły się w arkuszu1. Na chwile obecną za każdym razem muszę
rrr = ark.range(ark.rows.count,1).end(xlup).row +1
ark.Range("a"&rrr).CopyFromRecordset rs
zamiast
ark.Cells.ClearContents
ark.Range("a1").CopyFromRecordset rs
usunąć powstałe arkusze i uruchomić makro ponownie. Drugie pytanie czy jest możliwość w jakiś sposób ograniczyć ilość kolumn kopiowanych, bądź wskazać które kolumny z danego wiersza mają być skopiowane ?? Jeśli ktoś był by w stanie mi pomóc będę bardzo wdzięczny. Dopiero zaczynam
sqlstr = "SELECT * FROM [Arkusz1$] WHERE F4 = '" & argument & "'"
Zamiast "*" lista kolumn. F3, F5, F99, idt.
zabawę z VBA, więc prosił bym o ewentualne tłumaczenie jak dla laikaTen post został edytowany przez Autora dnia 22.07.13 o godzinie 09:07
Wojciech Gardziński
Sławomir
Broda
VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...
Temat: Makro - kopiowanie wybranych wierszy
Wojciech G.:Gdyby zadał Pan sobie trud przeczytania tematu, a nie jak małpka wklejał swoje linki, to pewnie mógłby Pan wnieść coś do dyskusji.
http://www.afin.net/samples/Cases/AFIN.NET.Information...
Wiersz 8. to "kopiowanie" z filtrem.
Wierszy takich może być ilość dowolna.
A tymczasem jak zwykle spam.Ten post został edytowany przez Autora dnia 22.07.13 o godzinie 12:09
Oskar
Shon
Dodatki do Office
www.VBATools.pl
Temat: Makro - kopiowanie wybranych wierszy
Sławek. Pobieranie danych przyrostowo było by efektywne w przypadku prawdziwej bazy danych, nie Excelowego arkusza. Powodem tego jest brak klucza w tabeli, jak i możliwość sortowania danych źródłowych i ich modyfikacji prze usera.Można oczywiście skupić się na tym aby jednak zmusić excela do pobrania nowych danych ale przy wywołaniu zapytania musiał byś podać nr wiersza od którego chcesz pobrać dane. W przypadku kiedy nie miałbyś pewności co do ich ciągłości to lepiej jest jednak czyścić obszar poprzednio pobranych danych i pobierać je na nowo. Takie czyszczenie możesz wywoływać kodem linijkę przed pobraniem - nie musisz uruchamiać 2-ch procedur.
Można też z rekordsetu pobrać dane do tablicy (odliczając ilość wierszy jakie już masz pobrane lub porównując dane z arkusza), a następnie ten variant wkleić na arkusz.: http://vbatools.pl/agregacja-wszystkich-arkuszy-skoros...
dane = .Range(.Range("a1"), .Cells(max_row, max_col)) 'przypisanie do tablicy
Arkusz_docelowy.Cells(LastRow + 1, 1).Resize(UBound(dane), max_col) = dane 'export na arkusz
Nie jest to analogiczny przykład ale z użyciem tablicy o jakiej pow wspomniałem. Sprawdź też zastosowanie w tym kodzie. http://vbatools.pl/usuniecie-pozycji-tabeli-nie-zawart...Ten post został edytowany przez Autora dnia 31.07.13 o godzinie 11:00
konto usunięte
Temat: Makro - kopiowanie wybranych wierszy
Witam,Zaciekawił mnie ten wątek ale jako kompletny brak znajomosci vba chcialbym prosic o pomoc.
[url]http://www.sendspace.pl/file/17c850f8e7947157047c551[url]
Powyzej zalaczylem plik .xlsm. Potrzebowalbym w nim dwa makra:
1. Makro, ktore generowaloby nowy plik xlsx z wszystkimi danymi, ktore sie w nim znajduja (lacznie z wierszem 1) tyle, ze posegrogowane wg. kolumny N
2. Makro, ktore generowaloby nowe pliki xlsx, z danymi z danymi z wszystkich kolumn ale tylko o takich samych wartosciach wg kolumny A, czyli w jednym pliku wszystkie dane z takimi samymi wartosciami z kolumny A - w moim przypadku makro stworzyloby 3 pliki - w jednym 3 wiersze (2,3,4), w drugim 2 wiersze (5,6) i w trzecim 2 wiersze (7,8). Realne ilosci wierszy to ok 50tys i dane w kolumnie A sa porozrzucane. Oczywiscie wiersz 1 jest stalym elementem kazdego pliku. W tym punkcie wiersze rowniez posegregowane wg kolumny N.
Pomozecie ?
Pozdrawiam,
Krzysztof
Oskar
Shon
Dodatki do Office
www.VBATools.pl
Temat: Makro - kopiowanie wybranych wierszy
@Krzysiek, może chcesz gotowe narzędzia:http://vbatools.pl/podzial-arkuszy-na-skoroszyty/
oraz
http://vbatools.pl/podziel-dane-na-arkusze-skoroszyty/
Temat: Makro - kopiowanie wybranych wierszy
Witam, dołączę do tematu, nie bardzo umiem sobie poradzić z napisaniem odpowiedniego makra.Mam tabelę w której w arkuszu Arkusz1 mam w 200 wierszach dane w następujących kolumnach:
Imię|Nazwisko|rok urodzenia|miejsowosc|kod|ulica|email|wiek
Jan|Kowalski|1991|Warszawa|00-000|Marszałkowska|jan.k@mail.pl|23
Andrzej|Kowalski|1992|Warszawa|00-000|Marszałkowska|andrzej.k@mail.pl|22
Andrzej|Wiśniewski|1991|Łowicz|00-000|Warszawska|andrzej.w@mail.pl|23
Chcę aby przy pomocy makra przypisanego do przycisku Excel kopiował wybrane wiersze, a z tych wierszy tylko określone komórki (A:B,D,F:H) te które w kolumnie wiek mają wynik "23" z arkusza Arkusz1 do Arkusz6, wiek jest wynikiem formuły.
Oskar
Shon
Dodatki do Office
www.VBATools.pl
Temat: Makro - kopiowanie wybranych wierszy
Artek,albo pętla FOR a w niej warunek IF() do tego deklaracja zamiennych na iteracje i arkusz docelowy,
albo autofiltr i skopiowanie przefiltrowanych do życzonego arkusza
(z tym 2gim radzi sobie nagrywarka, pierwszy zaś to lekka znajomość VBA).
Temat: Makro - kopiowanie wybranych wierszy
Dziękuje, nie znam się na VBA prawie. Zrobiłem to najprościej jak mi się wydaje, pewnie da się lepiej, na razie kopiuje mi jedną komórkę, myślę że przy kopiowaniu innych komórek z wiersza sobie poradzę, tylko pytanie jak skopiować tylko i umieścić po kolei te wiersze w których są dane?w tej chwili w arkusz1 w kolumnie A mam przykładowo
1
2
4
5
6
Do arkusz2 kopiuje mi
1
2
4
5
6
jak zrobić żeby w arkusz2 było
1
2
4
5
6
Moje dotychczasowe wypociny:
Sub KopiujDoArkusza2()Ten post został edytowany przez Autora dnia 11.03.14 o godzinie 20:13
Dim wksDane1 As Worksheet
Dim wksDane2 As Worksheet
Set wksDane1 = Worksheets("Arkusz1")
Set wksDane2 = Worksheets("Arkusz2")
For i = 1 To 10
If wksDane1.Range("A" & i).Value > "" Then
wksDane2.Range("A" & i).Value = wksDane1.Range("A" & i).Value
End If
Next i
End Sub
Oskar
Shon
Dodatki do Office
www.VBATools.pl
Temat: Makro - kopiowanie wybranych wierszy
No wszystko było by dobrze, gdyby nie fakt że nie masz drugiej zmiennej odliczającej wiersze w drugim arkuszu. W tym momencie nic innego nie robisz jak przepisujesz dane. Z drugiej strony co to jest i? i jest zmienną typu long.Dodajemy jej deklaracje jak i dodajemy następną zmienną tego samego typu - np niech to będzie x
Sub KopiujDoArkusza2()
Dim i as long, x as long
Dim wksDane1 As Worksheet
Dim wksDane2 As Worksheet
Set wksDane1 = Worksheets("Arkusz1")
Set wksDane2 = Worksheets("Arkusz2")
For i = 1 To 10
If wksDane1.Range("A" & i).Value > "" Then
x = x +1
wksDane2.Range("A" & x).Value = wksDane1.Range("A" & i).Value
End If
Next i
End Sub
Sprawdź sam jaki to dało efekt.
konto usunięte
Temat: Makro - kopiowanie wybranych wierszy
Witam, dorzucę swoje 3 grosze.Potrzebuję pomocy w modyfikacji kodu makra.
Z pliku oferty_eksport poniższe makro kopiuje kolumny od A do M począwszy od 3 wiersza do pliku Zestawienie_ofert / arkusza Oferty poczynając od 2 wiersza.
Zastosowane jest kopiowanie przyrostowe.
Moje pytanie brzmi - co muszę zmienić by makro sprawdziło najpierw czy dane które chcę skopiować już istnieją w pliku Zestawienie_ofert.xlsx ? Jeśli Tak to te dane są pomijane (cały wiersz), w przeciwnym razie - są kopiowane.
Sub open_copy_paste_n_close()
Dim thiswkb As Workbook, wkb As Workbook, min_row&
Set thiswkb = ActiveWorkbook
Workbooks.Open Filename:= "O:\pliki\oferty_eksport.xlsx" 'arkusz źródłowy
Set wkb = ActiveWorkbook
Dim rng1 As Range, rng2 As Range
With wkb.Sheets(1)
Set rng1 = .Range("a3:m" & .Cells(Rows.Count, "a").End(xlUp).Row)
End With
With thiswkb.Sheets("Oferty") 'arkusz docelowy w pliku Zestawienie_ofert.xslx
min_row = .Cells(Rows.Count, "a").End(xlUp).Row
If Len(.Range("a1")) > 0 Then min_row = min_row + 1 'nagłówek
Set rng2 = .Range("a" & min_row)
End With
rng1.Copy rng2
Windows("Zestawienie_ofert.xlsx").Activate
Workbooks("oferty_eksport.xlsx").Close SaveChanges:=False
End Sub
Podobne tematy
-
Excel » Makro - kopiowanie wybranych wierszy -
-
Excel » problem Excelowski - kopiowanie wybranych wierszy -
-
Excel » Kopiowanie wybranych wierszy z wielu arkuszy do arkusza... -
-
Excel » kopiowanie wybranych wierszy -
-
Excel » Kopiowanie wybranych wierszy do nowego arkusza -
-
Excel » Makro: kopiowanie zakresu o stałych rozmiarach do pustego... -
-
Excel » VBA kopiowanie wierszy z rejestru i druk 3 różnych arkuszy -
-
Excel » VBA - makro - wielokrotne kopiowanie wiersza ze względu... -
-
Excel » [Excel] Kopiowanie wierszy miedzy arkuszami -
-
Excel » Excel - makro do kopiowani wierszy i transpozycji -
Następna dyskusja: