Praca s datami v oddelenom .xlsx subore Vyřešeno

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

arasid
nováček
Příspěvky: 39
Registrován: říjen 11
Pohlaví: Nespecifikováno
Stav:
Offline

Praca s datami v oddelenom .xlsx subore  Vyřešeno

Příspěvekod arasid » 26 říj 2011 14:56

Cawte.. ucim sa pracovat s VBA a narazil som na jeden problem, na ktory nikde neviem najst odpoved.. Pisem si makra na ulahcenie prace s tabulkou co ma vyse 30k riadkov a rad by som oddelil makra od dat do zvlast suborov (pre rychlejsie ukladanie a updatovanie).
Ako priklad sem vlozim kod ktory som si napisal na hladanie viacnasobnych zaznamov.. teda ak v stlpci 15 v harku Data najde jeden zaznam viac krat skopiruje cely riadok s tymto zaznamom a vypise do ineho harku..
Co chcem je, aby som mohol prehladavane data z harku data mat v uzavretom xlsx, alebo xlsb subore a mohol s nimi pracovat ako doteraz.. teda aby mi toto makro mohlo stade kopirovat riadky a vkladat do otvoreneho workbooku v ktorom sa nachadza dane makro..
Z casti som nasiel riesenie cez funkciu executeexcel4macro(), no tato funkcia nevie vratit rozsah stlpca C15, ktory potrebujem pre funkciu countif..
Preto budem rad za akekolvek odkazy na miesta, kde by som nasiel odpoved na dany problem, pripadne daky navrh na riesenie...
Moj kod (vsimnite si len co riesim, adresovanie rozsahu su zatial len moje neuspesne pokusy):

Kód: Vybrat vše

Private Sub CommandButton1_Click()
Dim hod As String
Dim bunka As String
Dim i As Long
Dim j As Integer
Dim vyber As Range
Dim ciel As Range
Dim rozsah As String
Dim rozsah2 As Long
j = 5
p = "C:\Documents and Settings\quality\Desktop\Ivan S\Tests of external data source"
f = "DATA.xlsx"
s = "Raw data new models"

    For i = 1 To 100000
    a = Cells(i, 15).Address
    bunka = arg(p, f, s, a)
    bunka2 = ExecuteExcel4Macro(bunka)
    Cells(3, 3) = bunka2
           
            If bunka = "" Then
            Cells(3, 3) = "Done"
            MsgBox "Hotovo.. Pocet najdenych zaznamov: " & j - 5
            Exit Sub
            End If
   
   
    rozsah = "'C:\Documents and Settings\quality\Desktop\Ivan S\Tests of external data source\[DATA.xlsx]Raw data new models'!C15"
   rozsah2 = ExecuteExcel4Macro(rozsah)
    Cells(5, 2) = Application.CountIf(rozsah2, bunka)
    Cells(3, 2) = i
        If hod > 1 Then
        j = j + 1
        a = Cells(i, 1)
            Set vyber = GetValue(p, f, s, a)
            vyber.EntireRow.Copy
            Set ciel = Cells(j, 1)
            ciel.EntireRow.PasteSpecial
               
        End If
       
    Next i
   
Set vyber = Nothing
Set ciel = Nothing

End Sub

Private Function GetValue(path, file, sheet, ref)

    Dim arg As String
    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue = "File Not Found"
        Exit Function
    End If
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Range("A1").Address(, , xlR1C1)
    Cells(4, 2) = arg
    GetValue = ExecuteExcel4Macro(arg)
End Function
Private Function arg(path, file, sheet, ref)

    If Right(path, 1) <> "\" Then path = path & "\"
    If Dir(path & file) = "" Then
        GetValue2 = "File Not Found"
        Exit Function
    End If
    arg = "'" & path & "[" & file & "]" & sheet & "'!" & _
      Range(ref).Address(, , xlR1C1)
    Cells(4, 3) = arg
    'GetValue2 = ExecuteExcel4Macro(arg)
End Function


Private Sub CommandButton2_Click()

End Sub

Reklama
guest
Pohlaví: Nespecifikováno

Re: Praca s datami v oddelenom .xlsx subore

Příspěvekod guest » 26 říj 2011 18:05

Pokud mají data v sešitu charakter databáze (seznam), pak k němu přistupujte jako k databázi - přes ADO, i když ta cesta bude trnitá (datové typy sloupců, update dat atd.).

arasid
nováček
Příspěvky: 39
Registrován: říjen 11
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Praca s datami v oddelenom .xlsx subore

Příspěvekod arasid » 27 říj 2011 09:35

No prakticky to je tvar databazy, kazdy stlpec ma nazov data pod nim, no s formatom dat v riadkoch je to neiste..
A popravde neviem ako presne ADO pouzivat.. Vsade som zatial nasiel len ciastocne priklady, kt. zatial neviam zakomponovat do mojho kodu.. napr. ako zistim ci mam daky modul Jet a podobne.. mam excel 201O, tak tam snad bude.. ted skusim daco vytazit z tohto:
http://excelplus.net/news.php?readmore=20
uvidim ako to rozbeham..

Co sa tyka xlsx a xlsb aky je tam rozdiel? osobne bych dal data do xlsb? Lebo ma asi o polku mensiu velkost, no neviem ci to nebude na ukro dakych funkcii, kt. sa pak nebudu vedet dostat k datam..

arasid
nováček
Příspěvky: 39
Registrován: říjen 11
Pohlaví: Nespecifikováno
Stav:
Offline

Re: Praca s datami v oddelenom .xlsx subore

Příspěvekod arasid » 29 říj 2011 13:47

nejde to.. ani za prdel.. paradox je, ze ani excel nevie pracovat s countif ak je druhy subor zatvoreny..
dal som si vlookup hodnot, kt. boli v zosite jedna a pole hodnot bolo v zatvorenom zosite 2... ked som potiahol vzorec dole, vsetko slo ako malo aj napriek tomu ze vypocet bol na inom harku v zosite 1 ako skumane hodnoty...
toto iste som spravil s countif.. no s tym to uz neslo..

uz mi z teho jede hlava kolem..


Zpět na “Kancelářské balíky”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 5 hostů