Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] VBA Excel 2010 makro do Kopiowania plikow

makulig99 30 Sty 2013 20:14 2604 7
  • #1 30 Sty 2013 20:14
    makulig99
    Poziom 7  

    Witam!
    Chcialem sie zorientowac jak skopiowac plik (ktorego sciezka podana jest np w komorce A1 w excelu) do lokalizacji B1 (w komorce B1 znajduje sie docelowa sciezka )
    Oczwyiscie sciezek z plikami bedzie znacznie wiecej niz 1. Pracuje na excelu 2010. Bardzo prosze o pomoc ewentualnie wskazowki
    Dziekuje

    Dodano po 4 [godziny] 15 [minuty]:

    Czywiscie mam na mysli VBA nie VBS:)

    0 7
  • Pomocny post
    #2 31 Sty 2013 13:18
    Maciej Gonet
    Poziom 32  

    Najprościej na przykład tak:

    Sub Kopiowanie()
    Set fs = CreateObject("Scripting.FileSystemObject")
    fs.CopyFile [A1], [B1]
    End Sub

    [A1] zastępuje Range("A1")
    Dokładny opis metody CopyFile jest w Helpie do VBA. W nazwach plików można używać symboli wieloznacznych do kopiowania wielu plików naraz.

    0
  • #3 31 Sty 2013 20:50
    makulig99
    Poziom 7  

    Sub MoveFiles()

    Dim Cell As Range
    Dim Filename As String
    Dim Filepath As String
    Dim NewPath As String
    Dim Rng As Range
    Dim RngEnd As Range
    Dim Wks As Worksheet

    Set Wks = ActiveSheet

    Set Rng = Wks.Range("g1")
    Set RngEnd = Wks.Cells(Rows.Count, Rng.Column).End(xlUp)
    If RngEnd.Row < Rng.Row Then Exit Sub Else Set Rng = Wks.Range(Rng, RngEnd)

    For Each Cell In Rng
    Filename = Cell
    Filepath = Cell.Offset(0, 1)
    NewPath = Cell.Offset(0, 2)
    Name Filepath & "\" & Filename As NewPath & "\" & Filename

    Next Cell

    End Sub

    jest to kod ktory uzwam ale niestety wywala blad na ponizszej lini
    Name Filepath & "\" & Filename As NewPath & "\" & Filename

    0
  • Pomocny post
    #4 01 Lut 2013 10:48
    Maciej Gonet
    Poziom 32  

    Polecenie Name powinno działać poprawnie.
    Nie wiem jaką ma Pan strukturę plików.
    Możliwe przyczyny błędu:
    1. Plik docelowy już istnieje
    2. Folder docelowy nie istnieje
    3. Plik źródłowy jest otwarty
    4. Nazwa pliku zawiera znaki wieloznaczne "*" lub "?"

    0
  • #5 01 Lut 2013 21:00
    makulig99
    Poziom 7  

    Dzieki wielkie.
    Problemem bylo zle zapisanie sciezki pliku. Powyzsze rozwiazanie jednak nie do konca rozwialo moje problemy. Mam duza ilosc plikow do przeniesienia (za pomoca powyzszego kodu) problem polega na tym iz jesli w trakcie przenoszenia pojawi sie blad to przerwie on cala operacje (nie bede wiedzial ktore pliki sie przeniosly a ktore nie).W zwiazku z powyzszym mam pytanie, - czy istnieje mozliwosc aby stworzyc dodatkowa kolumne w ktorej bedzie pojawiala sie informacja ktore pliki sie nprzeniosly a ktore nie. Ponizej przyklad
    A (nazwa pliku) B(sciezka aktualna) C ( Sciezka docelowa) D ( komentarz)
    1.xls c:\gry c:\gry1 OK
    2.xls c:\gry c:\gry2 Blad
    3.xls c:\gry c:\gry3 OK
    komentarz OK oznacza ze plik zostal przeniesiony natomiast blad oznacza ze nie :)
    Z góry dziekuje za ewentualna pomoc

    0
  • Pomocny post
    #6 04 Lut 2013 11:09
    Maciej Gonet
    Poziom 32  

    Witam w nowym tygodniu,
    Musi Pan w swoim makro zdefiniować niestandardową obsługę błędów.
    Może to polegać na wpisaniu na początku kodu linijki:

    On Error Resume Next

    Dalej w kodzie testuje Pan zawartość obiektu Err.
    W Pana kodzie w linijce po instrukcji Name powinien Pan dopisać:

    If Err.Number = 0 Then
    Cell.Offset(0,3) = "OK"
    Else
    Cell.Offset(0,3) = "Blad": Err.Clear
    End If

    Dalej bez zmian. Powodzenia

    0
  • #7 04 Lut 2013 11:58
    makulig99
    Poziom 7  

    wielkie dzieki:)

    0
  • #8 06 Mar 2018 18:53
    makulig99
    Poziom 7  

    dzieki MAciej

    0