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

  tytuł wątku:
Wątki dyskusji

Prośba o KOD VBA . Kopiowanie zawartosci arkusza


otwartyotwarty rozpoczął: 0jack0 postów: 11



napisał: udios
postów: 9


umieszczony:
27 kwietnia 2009
14:37

  
Dzięki.
pomogło.
miałem wpisane w userform.

jeszcze raz dzięki
napisał: admin
postów: 613


umieszczony:
25 kwietnia 2009
07:53

  
Cytat:
czy może mi ktoś powiedzieć czemu po wpisaniu tego kodu wyświetla mi błąd
"Cannot define a public user defined type within an object module"


Bo wpisujesz ten kod w moduł ThisWorkbook albo w moduł Arkusza.
Wpisz w zwykły moduł.

Pozdrawiam
napisał: udios
postów: 9


umieszczony:
24 kwietnia 2009
17:26

  
Declare Function SHBrowseForFolder Lib "shell32.dll" _
  Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
  
Public Type BROWSEINFO
  hOwner As Long
  pidlRoot As Long
  pszDisplayName As String
  lpszTitle As String
  ulFlags As Long
  lpfn As Long
  lParam As Long
  iImage As Long
End Type


Sub ListFiles()
    Dim Msg As String
    Dim Directory As String, f As String
    Dim r As Long
.
.
.
[...]
.
.
.
' Analiza wyniku
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
  End If
End Function





Witam
czy może mi ktoś powiedzieć czemu po wpisaniu tego kodu wyświetla mi błąd
"Cannot define a public user defined type within an object module"

dotyczący "Public Type BROWSEINFO"
napisał: 0jack0
postów: 24


umieszczony:
12 marca 2007
13:15

  
W kwestii wyjaśnienia żeby zaliczyć semestr muszę przedstawić dwa rozwiązania tego problemu.

Pozdro i dzięki za odpowiedź.
napisał: filip000
postów: 3


umieszczony:
12 marca 2007
12:29

  
Zobacz też tutaj
http://wss.pl/frmThread.aspx?tid=34653
napisał: jottad
postów: 118


umieszczony:
12 marca 2007
12:23

edytowany:
12 marca 2007
12:59

  
Cytat:
Dzięki . Lista została zrobiona ale co dalej...... proszę o kod VBA

Zajrzyj na http://www.excelforum.pl/viewtopic.php?t=647&sid=9f5d9bc1fd8ad60be1488f6fafd3c13d
Dlaczego tak mnożysz swoje posty? To już trzecie forum, na którym spotykam się z tym problemem.
napisał: 0jack0
postów: 24


umieszczony:
12 marca 2007
09:37

  
Dzięki . Lista została zrobiona ale co dalej...... proszę o kod VBA
napisał: 0jack0
postów: 24


umieszczony:
9 marca 2007
09:27

  
Witam,

Próbowałem zrobić listę według wskazówek ale sie wywala i wyrzuca błąd " Compile error: Sub and Function not definited na linii SHGetPathFromIDList oraz podświetla linie Function GetDirectory(Optional Msg) As String.

Na marginesie nagranie makra mi nie pomoże ze względu na rózną ilośc wierszy w poszczególnych plikach a poza tym niewiem jak w to wrzucić pętle - zbyt mała wiedzą dysponuje temacie VBA .
Byłbym bardzo wdzięczny za całościowy kod VBA.
Pozdrawiam
napisał: piotrooh
postów: 17


umieszczony:
9 marca 2007
07:37

  
Na początek warto zdobyć listę plików. Możesz to uczynić za pomocą tego kodu:

Declare Function SHBrowseForFolder Lib "shell32.dll" _
  Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
  
Public Type BROWSEINFO
  hOwner As Long
  pidlRoot As Long
  pszDisplayName As String
  lpszTitle As String
  ulFlags As Long
  lpfn As Long
  lParam As Long
  iImage As Long
End Type


Sub ListFiles()
    Dim Msg As String
    Dim Directory As String, f As String
    Dim r As Long
    
    Msg = "Wybierz katalog zawierający pliki, które chcesz wyświetlić."
    Directory = GetDirectory(Msg)
    If Directory = "" Then Exit Sub
    If Right(Directory, 1) <> "\" Then Directory = Directory & "\"
    r = 1

' Wstawienie nagłówków
    Cells.ClearContents
    Cells(r, 1) = "Nazwa pliku"
    Cells(r, 2) = "Rozmiar"
    Cells(r, 3) = "Data/godzina"
    Range("A1:C1").Font.Bold = True
    
' Pobranie pierwszego pliku
    f = Dir(Directory, 7)
    Do While f <> ""
        r = r + 1
        Cells(r, 1) = f
        Cells(r, 2) = FileLen(Directory & f)
        Cells(r, 3) = FileDateTime(Directory & f)
    ' Pobranie następnego pliku
        f = Dir
    Loop
End Sub


Function GetDirectory(Optional Msg) As String
    Dim bInfo As BROWSEINFO
    Dim path As String
    Dim r As Long, x As Long, pos As Integer

' Główny kataloog = Pulpit
    bInfo.pidlRoot = 0&

' Tytuł w oknie dailogowym
    If IsMissing(Msg) Then
        bInfo.lpszTitle = "Wybierz folder."
    Else
        bInfo.lpszTitle = Msg
  End If

' Typ katalogu, który będzie zwrócony
    bInfo.ulFlags = &H1

' Wyświetlenie okna dialogowego
    x = SHBrowseForFolder(bInfo)

' Analiza wyniku
    path = Space$(512)
    r = SHGetPathFromIDList(ByVal x, ByVal path)
    If r Then
        pos = InStr(path, Chr$(0))
        GetDirectory = Left(path, pos - 1)
    Else
        GetDirectory = ""
  End If
End Function



Potem najlepiej nagrać sobie przykładowe makro z żądanymi operacjami. Potem w miejsce nazw plików wrzucisz te, które da w wyniku powyższy skrypt - przekazywane przez zmienną. Robisz pętlę na ileś tam powtórzeń (tyle ile plików) i powinno działać.
To tyle od siebie na początek. Mam nadzieję, że się przyda.
pozdrawiam
Piotrooh
napisał: 0jack0
postów: 24


umieszczony:
8 marca 2007
10:52

  
Struktura katalogów
Dysk D:

Katalog:
"Samochody"

Podktalogi:
1. Przebiegi (186 plików np. plik PO14CX.xls)
2. Najem (186 plików np. plik PO14XC.xls)
3. oraz plik wzór.xls (formularz excell)

W podkatalogach tych znajdują się o takiej samej nazwie pliki z których wartości chciałbym przekopiować na inny wzorcowy arkusz wzór.xls . Arkusz ten ma już formuły rozliczajace dany samochód na podstawie wprowadzonych wartośći.



wkopiowanie od 3 linii (w 3 pierwszych jest nagłówek pliku wzór.xls)

Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny C do pliku wzór.xls kolumny B
Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny F do pliku wzór.xls kolumny L
Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny v do pliku wzór.xls kolumny D
Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny w do pliku wzór.xls kolumny E
Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny X do pliku wzór.xls kolumny F
Z katalogu "Najem" pliku PO14CX.xls zawartość kolumny Z do pliku wzór.xls kolumny G
Z katalogu "Najem" pliku PO14CX.xls zawartość komórki G3 do pliku wzór.xls komórki D1
Z katalogu "Przebieg" pliku PO14CX.xls zawartość kolumny I do pliku wzór.xls kolumny AB * wspólczynik 0,7145


Powyższą opercję chciałbym wykonać dla wszystkich plików znajdujących się w dwóch katalogach.

Wynikiem miałbybyć 186 plików o nazwie wzór+nazwa_pliku_wkopiowanego.xls np.wzórPO14XC.xls


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z