vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 13 maja 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

getvalue i różne nazwy arkusza


otwartyotwarty rozpoczął: tomaszG postów: 13



napisał: tomaszG
postów: 10


umieszczony:
25 marca 2012
20:39

  
uruchomiłem i w domu działa genialnie - z kodu mało co rozumię niestety. mam natomiast małe obawy o sprzęt w pracy u mnie otwarcie okna w excelu trwa niekiedy 2 min (jak mam odpalonych kilka aplikacji to masakra) zauważyłem, że kopiowanie odbywa się przy pomocy otwierania i zamykania kolejnych plików - mam nadzieję że nie zawiesi mi systemu. juto próba

tym czasem serdeczne dzięki
napisał: admin
postów: 613


umieszczony:
22 marca 2012
22:35

  
nazwa pliku rozmiar
Przyklad.xls 79.50 kB

W załączeniu moja propozycja rozwiązania.

Nie jest ona idealna, bo:
1. Zrobiona na szybko,
2. Dane w pliku źródłowym nie są poprawnie sformatowane - proszę zobaczyć kolumnę "B". Excel dane w niej oznacza jako "Liczba przechowywana jako tekst"
3. Działa na sztywno zdefiniowanej ilości kolumn (27). Można to oczywiście dopracować.

Dopracować całkiem łatwo można jeszcze automatyczne zapisywanie pliku wynikowego w odpowiedniej lokalizacji,

Powodzenia!

pozdrawiam
admin
napisał: tomaszG
postów: 10


umieszczony:
22 marca 2012
20:23

  
nazwa pliku rozmiar
SOS_1820027612_2012011148_20120130.xls 19.50 kB

w załączeniu przykładowy plik

podobnych plików jest od kilku do kilkunastu w określonym folderze -różnią się wartościami i ilościami wierszy

i chcę zrobić z nich jeden zbiorczy arkusz - jedna tabela pod drugą z zachowaniem kolorów wypełnienia kolumny "F"

do tej pory robiono to w ten sposób, że otwierano nowy arkusz a potem po kolei każdy z poszczególnych plików i akcja "kopiuj/wklej"


ale głównie na chwilę obecną nurtuje mnie problem jak zrobić żeby funkcja getvalue lub inna zwracała wartości + kolor wypełnienia dla kolumny "F"
napisał: admin
postów: 613


umieszczony:
22 marca 2012
20:09

  
To już coś...
Ale ten opis jest daleko niewystarczający... Na załączonym pliku nic nie widać. Jeżeli chcesz dostać rozwiązanie musisz napisać jakie dane, z jakich kolumn z obydwu arkuszy chcesz scalić. Musisz też napisać jakie elementy formatowania (nie: "wszystkie", tylko konkretnie jakie!) należy przenieść. Opis musi być bardzo dokładny, inaczej nie wiadomo co należy zrobić. Ważna jest informacja jak są ułożone dane w arkuszu.

pozdrawiam
admin

Pliki Excela z przykładowymi danymi były też mile widziane

Cytat:
w załączeniu podstawowy przykład o co mi chodzi ... kilka plików z podobnymi tabelami (2 screeny) kopiowane do jednego zbiorczego

niepotrzebne wiersze i elementy makro samo usunie (to nie jest problem)

generalnie ma być zachowany format tabel umieszczanych jedna pod drugą, łącznie z kolorami użytymi w jednej z kolumn


najprościej : chcę scalić zawartość wszystkich plików xls zawartych w jednym katalogu do jednego arkusza
napisał: tomaszG
postów: 10


umieszczony:
22 marca 2012
19:05

edytowany:
22 marca 2012
19:59

  
nazwa pliku rozmiar
przyklad.jpg 143.71 kB

w załączeniu podstawowy przykład o co mi chodzi ... kilka plików z podobnymi tabelami (2 screeny) kopiowane do jednego zbiorczego

niepotrzebne wiersze i elementy makro samo usunie (to nie jest problem)

generalnie ma być zachowany format tabel umieszczanych jedna pod drugą, łącznie z kolorami użytymi w jednej z kolumn


najprościej : chcę scalić zawartość wszystkich plików xls zawartych w jednym katalogu do jednego arkusza
napisał: tomaszG
postów: 10


umieszczony:
22 marca 2012
18:48

  
To w odniesieniu do pkt 1.

jak w takim razie określić zmienną/e dla pobieranej komórki (lub zakresu/tablicy) aby przeniesiona w miejsce docelowe zachowała pierwotny format - głównie kolor wypełnienia

jeśli można to proszę na podstawie zamieszczonego wcześniej kodu
napisał: admin
postów: 613


umieszczony:
22 marca 2012
09:19

  
Cytat:
Dwa kolejne pytania :

1. czy getvalue ma możliwość zwrócenia poza daną wartoscią również formatu komórki (np kolor wypełnienia)

2. czy istnieje inny sposób by scalić kilka plików w jeden (bez ich otwierania) - każdy zawiera podobne tabele z różnymi ilościami wierszy, bo może źle się zabieram do tematu

wygląda to tak, że cyklicznie otrzymuję dane w postaci arkusza z tabelą, w której wcześniej zaznaczono koszty 2 różnych działów - odrębnymi kolorami

getvalue ładnie przepisuje do jednego arkusza tabele z plików umieszczonych w określonym folderze, ale do dalszej analizy potrzebne mi są właśnie kolory, bo makro na ich podstawie podzieli zsumuje dane itd...


1. Format komorki musisz zapisac w zmiennych, osobne zmienne potrzebujesz dla pogrubienia, kroju czcionki, wielkosci czcionki, kolorow tla i czcionki...
2. Music otworzyc pliki zeby je przerobic. (Choc istnieje inny sposob, poprzez DAO, ale.. NIE ROB TEGO!
Opisz dokladnie problem, zalacz przykladowe pliki i napisz co chcesz z nich uzyskac.
napisał: tomaszG
postów: 10


umieszczony:
21 marca 2012
20:14

  
Dwa kolejne pytania :

1. czy getvalue ma możliwość zwrócenia poza daną wartoscią również formatu komórki (np kolor wypełnienia)

2. czy istnieje inny sposób by scalić kilka plików w jeden (bez ich otwierania) - każdy zawiera podobne tabele z różnymi ilościami wierszy, bo może źle się zabieram do tematu

wygląda to tak, że cyklicznie otrzymuję dane w postaci arkusza z tabelą, w której wcześniej zaznaczono koszty 2 różnych działów - odrębnymi kolorami

getvalue ładnie przepisuje do jednego arkusza tabele z plików umieszczonych w określonym folderze, ale do dalszej analizy potrzebne mi są właśnie kolory, bo makro na ich podstawie podzieli zsumuje dane itd...
napisał: tomaszG
postów: 10


umieszczony:
11 marca 2012
21:48

  
dzięki - pomogło, poskładałem z moim kodem zapętliłem i poszedłem krok dalej .... jak będą kolejne problemy, których nie zdołam znaleźć w sieci dam znak . pozdrawiam
napisał: Trebor
postów: 1209


umieszczony:
11 marca 2012
18:05

  
Sprawdź sposób (lekko przerobione makro Tajana) na wyciągnięcie nazwy arkusza:
Function GetWorkbookSchema(sciezka)

Dim cnt As Object
Dim cat As Object

Set cnt = CreateObject("ADODB.Connection")
Set cat = CreateObject("ADOX.Catalog")

With cnt
    .ConnectionString = _
     "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sciezka & _
     ";Extended Properties=""Excel 8.0;HDR=Yes;"""
    .Open
End With

cat.ActiveConnection = cnt

    GetWorkbookSchema = Replace(cat.Tables(0).Name, "'", "")
    
       GetWorkbookSchema = Left(GetWorkbookSchema, Len(GetWorkbookSchema) - 1)

cnt.Close

Set cnt = Nothing
Set cat = Nothing

End Function

Sub nazwa_arkusz()
MsgBox GetWorkbookSchema("C:\Documents and Settings\Admin\Pulpit\Excel\ado.xls")
End Sub


Korzystając z powyższego można by od razu wyciągnąć dane, ale GetValue też dobre.
napisał: tomaszG
postów: 10


umieszczony:
11 marca 2012
17:40

  
wykorzystałem kod znaleziony w sieci

Private Function GetValue(path, file, sheet, ref) As Variant
' GetValue(p,f,s,r)
' p - scieżka
' f - plik
' s - zakładka
' ref - komórka np ."A3"

Dim arg As String
Dim nRow, nCol
Dim nRowCount, nColCount
Dim nActRow, nActCol
Dim ArrVal() As Variant

If Right(path, 1) <> "\" Then path = path & "\"
If Dir(path & file) = "" Then
'brak pliku ...
GetValue = CVErr(2042)
Exit Function
End If
nRow = Range(ref).Row
nCol = Range(ref).Column
nRowCount = Range(ref).Rows.Count
nColCount = Range(ref).Columns.Count
ReDim ArrVal(1 To nRowCount, 1 To nColCount)
For nActRow = 1 To nRowCount
For nActCol = 1 To nColCount

arg = "'" & path & _
"[" & file & "]" & _
sheet & "'!" & _
"R" & nRow + nActRow - 1 & _
"C" & nCol + nActCol - 1

ArrVal(nActRow, nActCol) = ExecuteExcel4Macro(arg)
Next
Next
GetValue = ArrVal
End Function

pliki umieszczone w jednym katalogu, każdy z nich zawiera jeden arkusz, ale nazwy arkuszy nie są identyczne
(najpierw tworzę tablice nazw plików, a potem w pętli zasysam potrzebne dane z każdego z nich), no niestety bez umieszczenia właściwej nawy arkuszy dla poszczególnych plików nic chyba z tego nie będzie
napisał: Trebor
postów: 1209


umieszczony:
11 marca 2012
16:04

  
Czy pliki z których chcesz pobierać dane mają tylko jeden arkusz?
Jeśli arkuszy jest więcej to jak rozróżnić, w którym są potrzebne dane?
Podaj na forum akładnię funkcji GetValue, której używasz.
napisał: tomaszG
postów: 10


umieszczony:
11 marca 2012
12:55

  
witam

tworze właśnie makro (w zasadzie modyfikuję inne swoje) i napotkałem problem z pobieraniem danych przy pomocy funkcji getvalue

w wielkim skrócie makro ma pobierać dane z kliku (kilkunastu) plików xls i kopiować do jednego zbiorczego (w innym zastosowaniu wspaniale sie ta metoda sprawdzała, gdyż wszystkie pliki miały 1 arkusz o identycznej nazwie, którą "na sztywno" wpisałem w kod makra

obecnie okazało się, że pliki posiadają arkusz o różniących się nazwach i funkcja getvalue w efekcie zwraca błąd #ARG! (co zrozumiałe)

moje pytanie : czy jest metoda aby wydobyć nazwy arkusza dla poszczególnych plików (bez ich otwierania oczywiście)


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z