Problem z makro

0

Cześć, dopiero zaczynam swoją przygodę z VBA :) Próbuję stworzyć kod, który pozwoli na:

  1. Otwarcie przeglądarki na konkretnym folderze i wybór pliku Excel z konkretnego katalogu
  2. Następnie skopiowanie danych z owego pliku
    Za każdym razem użytkownik miałby możliwość wyboru innego pliku Excel, w zależności od potrzeby. Wszystkie pliki mają jednak identyczną strukturę, stąd dana formuła pozostałaby bez zmian, zmianie uległaby jedynie nazwa pliku. Mam jednak pytanie, jak go zdefiniować w kodzie, aby potem móc wprowadzać w nim zmiany?
    Poniżej proponowany kod:
Sub PobierzDane()

Dim str_folder As String

str_folder = "C:\Users\LEN\Desktop\tech"  ' folder to open

Call Shell("explorer.exe " & str_folder, vbNormalFocus)
    

ActiveWorkbook = ActiveWorkbook.AW

    
    Windows("AW").Activate
    Range("G4").Select
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("H5:H6").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Windows("ActiveWorkbook").Activate
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    ActiveSheet.Paste
    Windows("ActiveWorkbook").Activate
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("A7:B9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("H5:H6").Select
    Selection.Copy
    Range("A7:B9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A7:B9").Select
    ActiveCell.FormulaR1C1 = ""
    Range("H5:H6").Select
    Selection.Copy
    Range("A7:B9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("H5:H6").Select
    Selection.Copy
    Range("A7:B9").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A5:B6").Select
    ActiveCell.FormulaR1C1 = ""
    Range("A7:B9").Select
    ActiveCell.FormulaR1C1 = ""
    Range("H5:H6").Select
    ActiveCell.FormulaR1C1 = "*03007"
    Range("A7:B9").Select
    ActiveCell.FormulaR1C1 = "*03007"
    Windows("ActiveWorkbook").Activate
    Range("E3").Select
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("A5:B6").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Windows("ActiveWorkbook").Activate
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("A5:B6").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Windows("ActiveWorkbook").Activate
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("A5:B6").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Range("A5:B6").Select
    Windows("ActiveWorkbook").Activate
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    ActiveSheet.Paste
    Windows("ActiveWorkbook").Activate
    Range("C2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("I5:I6").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = ""
    Windows("ActiveWorkbook").Activate
    ActiveCell.FormulaR1C1 = "1/11/1996"
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("I5:I6").Select
    ActiveCell.FormulaR1C1 = "1/11/1996"
    Windows("ActiveWorkbook").Activate
    Range("B10:B49").Select
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    ActiveWindow.SmallScroll Down:=9
    Range("A32:F32").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("ActiveWorkbook").Activate
    ActiveWindow.SmallScroll Down:=-42
    Range("D10:E49").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("G32").Select
    Windows("ActiveWorkbook").Activate
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    Range("G32:H53").Select
    Windows("ActiveWorkbook").Activate
    ActiveWindow.SmallScroll Down:=-27
    Range("D10:E35").Select
    Application.CutCopyMode = False
    Selection.Copy
    Windows("Zlecenie produkcyjne_makra.xlsm").Activate
    ActiveSheet.Paste Link:=True
    Range("P37").Select
End Sub
1

Tu masz tutorial z wytłumaczeniem, jak użyć FileDialog do wybrania pliku z dysku: http://software-solutions-online.com/excel-vba-open-file-dialog/
Tym poleceniem otworzysz plik: https://msdn.microsoft.com/en-us/vba/excel-vba/articles/workbooks-open-method-excel
A zmienną przechowującą nazwę pliku zadeklaruj dokładnie tak, jak w tej wersji robisz to z nazwą folderu.

0

Dzięki, udało mi się z tym poradzić i wszystko działa :) Mam za to teraz problem z SelectBox. Chcę ustawić SelectBox z 2 opcjami i w zależności od wyboru opcji, odpowiedź powinna zostać wstawiona do danej komórki. Jak powinien wyglądać taki kod? Dodanie komendy "Dim as Value" na początku niestety nie działa... Będę wdzięczna za pomoc, bo przeszukałam prawie cały internet i nie mogę znaleźć odpowiedzi :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1