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.

[VBA] - Prośba o przerobienie kodu, by nie wyskakiwał błąd autoryzacji

lisekx 05 Wrz 2015 11:03 843 9
  • #1 05 Wrz 2015 11:03
    lisekx
    Poziom 14  

    Jak przerobić makro poniżej, by działało przy otwartym skoroszycie źródłowym (nie mogę go zamykać), z którego ma pobierać dane, gdyż obecnie wyskakuje mi taki błąd (dane oczywiście pobiera):

    [VBA] - Prośba o przerobienie kodu, by nie wyskakiwał błąd autoryzacji

    i przenosi do tej linii

    Code:
    Set wb = GetObject(strQ)


    Kod zamyka skoroszyt źródłowy (a chciałbym, żeby nie zamykał) i przy próbie otworzenia go na nowo wyskakuje taki komunikat:
    [VBA] - Prośba o przerobienie kodu, by nie wyskakiwał błąd autoryzacji
    i muszę zamknąć skoroszyt, do którego miałem skopiować dane, bym mógł otworzyć ten źródłowy

    Dodam, że podczas testów kodu w domu plik działa bez zarzutu, a powyższe problemy pojawiają się dopiero, gdy testuje go w pracy na sieci, skoroszyt źródłowy, z którego pobierane są dane jest udostępniony i korzysta z niego kilku użytkowników jednocześnie


    Kod: vb
    Zaloguj się, aby zobaczyć kod

    0 9
  • #2 05 Wrz 2015 12:02
    PRL
    Poziom 33  

    Masz przecież napisany komunikat o duplikatach w nazwie plików.

    0
  • #3 05 Wrz 2015 12:57
    lisekx
    Poziom 14  

    tak, ale on jest zamykany kodem (na pasku narzędzi go nie widać) a przy ponownej próbie otworzenia go wyskakuje komunikat, że jest otwarty, wiec jak to obejść ?

    0
  • #4 05 Wrz 2015 13:03
    PRL
    Poziom 33  

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Jaka jest ścieżka do pliku źródłowego, w którym jest to makro?

    0
  • #5 05 Wrz 2015 13:21
    JRV
    Specjalista - VBA, Excel

    lisekx napisał:
    muszę zamknąć skoroszyt, do którego miałem skopiować dane, bym mógł otworzyć ten źródłowy

    Z tego wynika, że oba pliki mają tę samą nazwę
    lisekx napisał:
    jest zamykany kodem (na pasku narzędzi go nie widać) a przy ponownej próbie otworzenia go wyskakuje komunikat, że jest otwarty
    Z tego wynika, że nie jest zamykany

    0
  • #6 05 Wrz 2015 13:41
    clubs
    Poziom 29  

    Witam
    Ja bym podmienił

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    na
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    (z parametrem do odczytu)

    reszta bez zmian

    0
  • #7 05 Wrz 2015 14:11
    lisekx
    Poziom 14  

    PRL napisał:
    Jaka jest ścieżka do pliku źródłowego, w którym jest to makro?

    Makro jest w skoroszycie DANE.xlsm w arkuszu Arkusz1, który mam na pulpicie. Przycisk POBIERZ pobiera dane ze skoroszytu z lokalizacji D:\CCC\ccc\ (jest w nim kilka skoroszytów wiernej kopii arkusza Arkusz1, ale z różnych dni) gdzie codziennie zakładany jest nowy plik odpowiadający dzisiejszej dacie (np. 04.09.2015.xlsx) i pobiera dane z arkusza z komórek B3:AR400 do mojego arkusza w te same komórki.
    Jeśli skoroszyt 04.09.2015.xlsx jest zamknięty, to z pobieraniem danych nie ma problemu, natomiast problemy pojawiają się, gdy skoroszyt z datą jest otwarty (a muszę go mieć przez cały dzień otwarty), wtedy wywala te błędy.

    clubs napisał:
    Witam
    Ja bym podmienił
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    na
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    (z parametrem do odczytu)

    reszta bez zmian

    po podmianie wywala błąd w tej linii
    Code:
    actWS.[A1].Select



    Gdzieś wyczytałem, że dodanie linii
    Code:
    If Not IsFileOpen(strQ) Then


    oraz dodanie funkcje isFileOpen pomoże, ale nic to nie dało
    Code:
    Function IsFileOpen(strFullPathFileName As String) As Boolean
    
    Dim hdlFile    As Long

        On Error Resume Next
        hdlFile = FreeFile
        Open strFullPathFileName For Random Access Read Write Lock Read Write As hdlFile
        If Err.Number <> 0 Then IsFileOpen = True
        Close hdlFile
        On Error GoTo 0
    End Function

    0
  • Pomocny post
    #8 05 Wrz 2015 15:23
    clubs
    Poziom 29  

    po podmianie wywala błąd w tej linii

    Code:
    actWS.[A1].Select


    dodaj przed tym
    Kod: vbnet
    Zaloguj się, aby zobaczyć kod

    1
  • Pomocny post
    #9 06 Wrz 2015 09:12
    JRV
    Specjalista - VBA, Excel

    zmien funkcje isFileOpen

    Code:
    Function IsFileOpen(strFullPathFileName As String) As Boolean
    
    Dim wb As Workbook
    Dim wbn As String
    wbn = Split(strFullPathFileName, "\")(UBound(Split(strFullPathFileName, "\")))
    For Each wb In Workbooks
        If wb.Name = wbn Then IsFileOpen = True: Exit For
    Next
    End Function

    1
  • #10 06 Wrz 2015 12:18
    lisekx
    Poziom 14  

    Jutro w pracy sprawdzę czy któraś z podpowiedzi pomogła

    0