kinggustav napisał: To pewnie będzie trzeba zmienić podejście. Masz dane z ostatniego miesiąca (ile wierszy?) i potrafisz go przekonwertować do wymaganej postaci, masz z poprzednich miesięcy (znowu ile?) i to wszystko potem musisz złączyć (czy tu nie wejdziemy w ograniczenie Excela?) i przetwarzać? Dobrze to rozumiem?
Jeżeli potrafisz przekonwertować plik w rozsądnym czasie i masz problem żeby to zmienić, to może zapisz go gdzieś, a potem wczytaj już gotowy. Makro bym umieścił w pliku, gdzie masz dane z poprzednich okresów i ew. coś jeszcze. Dzięki temu operowałoby tylko na jednym skoroszycie. Różne nazwy pliku to nie problem, wystarczy go ręcznie otworzyć i brać dane z już otwartego Excela (moja ulubiona metoda wybierania, z tego co napisałeś możesz szukać otwartego pliku z końcówką nazwy .xls).
Udało mi się wszystko zrobić tak jak chciałem dzięki Power Query, lecz firma nie posiada ( i nie chce posiadać) tego dodatku, gdyż korzystają z Excel 2010. Także muszę zmienić sposób, zrobię makro, które skopiuje dane i stworzy z nich tabelę, oraz odznaczy puste wiersze. Możesz mi podać fragment kodu, który pozwoli na wybór pliku, z którego zacznie kopiować dane?
Edit:
Mam kod do otwierania okna wyboru pliku, lecz po wyborze i skopiowaniu odpowiednich rzeczy chciałbym ten plik zamknąć, i nie wiem jak się za to zabrać.
Sub czyszczenie()
Dim plik As String
plik = Application.GetOpenFilename( _
FileFilter:="Plik raportu w formacie Exela ,*.xl*", _
Title:=" Wska¿ plik z raportu dziennego")
If plik = "False" Then
MsgBox " Anulowano wczytywanie", vbCritical, " U W A G A"
Else
MsgBox plik, , " Wczytywanie plku"
End If
Workbooks.Open Filename:=plik
Range("A2:Y4").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
Selection.Copy
Windows("RAPORT Stacji F1 - Kopia.xlsm").Activate
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'tu powinno zamykać plik, Workbooks.Close Filename:=plik ani Workbooks(plik).close nie działa
End sub
Edit2: Poradziłem sobie używając set.