Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 27905 Skopiuj do schowka Dodawanie nowych danych- Błaganie o pomoc ;(
Autor Wiadomość
niko777
słuchacz


Posty: 7
Wysłany: 2012-02-08, 10:52   Dodawanie nowych danych- Błaganie o pomoc ;(

Witam ponownie kolegów i proszę o pomoc.
Mam makro które pobiera dane z arkuszy i tworzy nowy plik z tabelą do której wstawiane są odpowiednie dane (pobiera dane od końca określonej kolumny)
oto jak ono wygląda


Kod:
Sub Zestawieniedanych()
Dim ListaZbiorów, NazwaZb

 Dim ostatniWiersz As Long
 
 Dim InputWb As Workbook
 Dim wrkSh As Worksheet
 'Set InputWb = ActiveWorkbook
 
 Dim OutCel As Range
 
 ListaZbiorów = Application.GetOpenFilename("Excel (*.xls),*.xls", , "wybierz dane", , True)
 If Not IsArray(ListaZbiorów) Then Exit Sub
 
 ' With Workbooks.Add(1).ActiveSheet
 ' With Worksheets.Add
 With Worksheets("Dane")
  Set OutCel = .Cells(5, 1)
 End With
 
 
 For Each NazwaZb In ListaZbiorów
 Set InputWb = Workbooks.Open(NazwaZb, 0, True)
 For Each wrkSh In InputWb.Worksheets
  ostatniWiersz = 0
  On Error Resume Next
 '  ostatniWiersz = wrkSh.Columns("K").Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
   ostatniWiersz = wrkSh.Columns("j").Find("*", , xlValues, xlWhole, xlByRows, xlPrevious, False, False).Row
  On Error GoTo 0
 
  Set OutCel = OutCel.Cells(2, 1)
  ThisWorkbook.Sheets("Dane").Hyperlinks.Add Anchor:=OutCel, Address:= _
        NazwaZb, SubAddress:=wrkSh.Name & "!" & "A1", TextToDisplay:=wrkSh.Name
  OutCel.Cells(1, 2).Value = InputWb.Name
 
  If ostatniWiersz >= 6 Then
    OutCel.Cells(1, 1 + 1 + 1).Value = wrkSh.Cells(ostatniWiersz, "j").Value
    OutCel.Cells(1, 1 + 2 + 1).Value = wrkSh.Cells(ostatniWiersz - 1, "j").Value
    OutCel.Cells(1, 1 + 3 + 1).Value = wrkSh.Cells(ostatniWiersz - 2, "j").Value
    OutCel.Cells(1, 1 + 4 + 1).Value = wrkSh.Cells(ostatniWiersz - 3, "j").Value
    OutCel.Cells(1, 1 + 5 + 1).Value = wrkSh.Cells(ostatniWiersz - 4, "j").Value
    OutCel.Cells(1, 1 + 6 + 1).Value = wrkSh.Cells(ostatniWiersz - 7, "j").Value
  End If
 Next
  Application.DisplayAlerts = False
   InputWb.Close False
   Set InputWb = Nothing
  Application.DisplayAlerts = True
 Next
End Sub


Mam wielką prośbę potrzebuje żeby pobierało jeszcze z każdego arkusza i wstawiało do tej tabeli dane z komórek J1 , J2 , J3 , J4 .
Pewnie to prosta sprawa , ale nie chciałbym coś namieszać ...
Z góry dziękuje za pomoc

Edit: Proszę stosować TAGi [CODE]
ID posta: 147865 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

negatyv
Excel Expert



Zaproszone osoby: 4
Pomógł: 195 razy
Posty: 910
Wysłany: 2012-02-08, 18:48   

Twoje komórki określasz po prostu:
Kod:
wrksh.range("J1")
,
Musisz tylko zdecydować, gdzie te dane wkleić. Np.
Kod:
OutCel.Cells(1, 1 + 7 + 1).Value = wrkSh.Range("J1")
ID posta: 147931 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

niko777
słuchacz


Posty: 7
Wysłany: 2012-02-09, 10:38   

negatyv napisał/a:
Twoje komórki określasz po prostu:
Kod:
wrksh.range("J1")
,
Musisz tylko zdecydować, gdzie te dane wkleić. Np.
Kod:
OutCel.Cells(1, 1 + 7 + 1).Value = wrkSh.Range("J1")




Kurcze jak dla mnie nadal czarna magia ... chcę żeby dane z komórek J1 ,J2 ,J3, J4 tworzyły kolejna kolumnę w zestawieniu wiec to chyba tak
Kod:
 OutCel.Cells(1, 1 + 1 + 1).Value = wrkSh.Cells(ostatniWiersz, "j").Value  OutCel.Cells(1, 1 + 2 + 1).Value = wrkSh.Cells(ostatniWiersz - 1, "j").Value
OutCel.Cells(1, 1 + 3 + 1).Value = wrkSh.Cells(ostatniWiersz - 2, "j").Value
OutCel.Cells(1, 1 + 4 + 1).Value = wrkSh.Cells(ostatniWiersz - 3, "j").Value
OutCel.Cells(1, 1 + 5 + 1).Value = wrkSh.Cells(ostatniWiersz - 4, "j").Value
OutCel.Cells(1, 1 + 6 + 1).Value = wrkSh.Cells(ostatniWiersz - 7, "j").Value

tu jest tworzona tabela z pobieranymi dotychczas danymi... a żeby dodać następne z danymi z komórek J1,J2,J3,J4 to chyba tak:
Kod:
 OutCel.Cells(1, 1 + 7 + 1).Value = wrkSh.Range("J1").Value
 OutCel.Cells(1, 1 + 8 + 1).Value = wrkSh.Range("J2").Value
 OutCel.Cells(1, 1 + 9 + 1).Value = wrkSh.Range("J3").Value
 OutCel.Cells(1, 1 + 10 + 1).Value = wrkSh.Range("J4").Value
,
mam rację?
w którym miejscu wstawić to
Kod:
wrksh.range("J1")
i dlaczego wcześniej mam tam
Kod:
wrkSh.Cells


Kurcze jak dla mnie to masakra jakaś...
żeby było jasne o co mi chodzi... to chcę żeby do dotychczas pobieranych danych z tych arkuszy pobrać jeszcze dane z komórek J1,J2,J3,J4 i umieścić je w kolejnych kolumnach tabeli
ID posta: 147988 Skopiuj do schowka
 
 
negatyv
Excel Expert



Zaproszone osoby: 4
Pomógł: 195 razy
Posty: 910
Wysłany: 2012-02-09, 11:09   

Dobrze zrobiłeś :) Coś nie działa?

Zapis wrksh.range("J1") to to samo co wrkSh.Range("J1").Value, po prostu Excel się domyśla, że podając range chcesz uzyskać jego wartość (value).

To "cells" to inna metoda wskazywania komórek. Używasz takiego, jakie jest w tej chwili wygodne.

wrsk.cells(1,1) to to samo co wrsk.range("A1")
_________________
http://www.123office.pl - blog poświęcony programom pakietu MS Office.
ID posta: 147994 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

niko777
słuchacz


Posty: 7
Wysłany: 2012-02-09, 14:54   

Kolego jesteś WIELKI !!
Dzięki

Jeszcze mam jedną prośbę ... czy da się tak zrobić żeby najpierw czyściło z danych arkusz do którego są pobierane?
Bo w tej chwili np wczytuje 30 wierszy i jest ok , następnie chce wczytać dane z innych arkuszy których jest np 10. I wtedy mam tak ze mam te 10 wierszy z danymi i poniżej 20 starych danych. chodzi mi o to żeby przed pobraniem danych wyczyściło stare dane w tym arkuszu
Pozdrawiam
ID posta: 148032 Skopiuj do schowka
 
 
negatyv
Excel Expert



Zaproszone osoby: 4
Pomógł: 195 razy
Posty: 910
Wysłany: 2012-02-09, 15:02   

Myślę, że jeśli chodzi o Excela to są tutaj więksi ode mnie :)

Kod:
Worksheets("nazwa arkusza").Cells.ClearContents
_________________
http://www.123office.pl - blog poświęcony programom pakietu MS Office.
ID posta: 148034 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

niko777
słuchacz


Posty: 7
Wysłany: 2012-02-23, 11:00   

Działa , tylko czyści wszystko w arkuszu a ja mam tam przygotowaną tabele do której są wczytywane te dane .
Chodzi mi bardziej o polecenie "wyczyść zawartość" z danego zakresu np pd D1 do K200
Jakiś pomysł?
ID posta: 149967 Skopiuj do schowka
 
 
negatyv
Excel Expert



Zaproszone osoby: 4
Pomógł: 195 razy
Posty: 910
Wysłany: 2012-02-23, 11:58   

Kod:
Worksheets("nazwa arkusza").range("D1:K200").ClearContents


http://msdn.microsoft.com...office.12).aspx
_________________
http://www.123office.pl - blog poświęcony programom pakietu MS Office.
ID posta: 149978 Skopiuj do schowka
 
 

EXCELFORUM.pl POLECA - Bezplatne triki prosto na skrzynke email

Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.marketingNET.pl

Archiwum