Kategorie szkoleń | Egzaminy | Kontakt
  • 1
  • 0
  • 1

Cześć, mam problem z plikiem. W poniższym makro jak otwieram plik opcją application.getopengfilename nie mogę ustawić tego pliku na aktywny. Cały czas mam aktywny plik w którym uruchamiam makro a nie ten który dzięki temu makru otworzyłem. Pewnie to jakaś błahostka ale nie wiem jak to przejść.

 

Sub Przesylaniewynikow()

Dim I As Long
Dim K As Long
Dim wb As Workbook
Dim plik As String


On Error Resume Next

plik = Application.GetOpenFilename
Workbooks.Open plik


ActiveSheet.Range("i1").Select
Selection.EntireColumn.Select
Selection.Insert
ActiveSheet.Range("i1").Select

Set wb = ActiveWorkbook

 

For K = 3 To Worksheets("stan zatrudnienia").Cells(Rows.Count, "j").End(xlUp).Row
Worksheets("stan zatrudnienia").Cells(K, "i").Value = Worksheets("stan zatrudnienia").Cells(K, "j").Value & " " & Worksheets("stan zatrudnienia").Cells(K, "k").Value
Next K

On Error Resume Next

For I = 3 To Worksheets("stan zatrudnienia").Cells(Rows.Count, "j").End(xlUp).Row

Range("z" & I).Value = WorksheetFunction.VLookup(Range("i" & I).Value, Workbooks("szablon do wyliczania premii - cash.xlsm").Worksheets("wyniki").Range("b10:v49"), 17, 0)
Range("aa" & I).Value = WorksheetFunction.VLookup(Range("i" & I).Value, Workbooks("szablon do wyliczania premii - cash.xlsm").Worksheets("wyniki").Range("b10:v49"), 18, 0)
Range("ab" & I).Value = WorksheetFunction.VLookup(Range("i" & I).Value, Workbooks("szablon do wyliczania premii - cash.xlsm").Worksheets("wyniki").Range("b10:v49"), 19, 0)

Next I

ActiveSheet.Range("i1").Select
Selection.EntireColumn.Select
Selection.Delete
ActiveSheet.Range("i1").Select

End Sub

Łukasz_Chodkowski_jvfp
  • Zapytał
  • @ Łukasz_Chodkowski_jvfp | 10.08.2021
    • 0
    • 0
    • 0

Odpowiedź (1)

  • 0

A po co chcesz go aktywować? Metod Activate i Select należy unikać jak ognia, bo jeśli cokolwiek pójdzie nie tak, makro może namieszać w nieprzewidzianym miejscu, a dodatkowo mocno spowalniają wykonywanie kodu. Zdecydowanie lepiej będzie przypisać otwierany skoroszyt do zmiennej (Set open_wb = Workbooks.Open(plik)) lub użyć klauzuli With (With Workbooks.Open(plik) ... End With).

Mirosław_Janiak
  • Odpowiedział
  • @ Mirosław_Janiak | 04.11.2021
    • 1
    • 7
    • 1