vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest poniedziałek, 29 kwietnia 2024 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

Makro w MS Excel do kopiowania zawartości komórek między arkuszami


otwartyotwarty rozpoczął: testsep1 postów: 12



napisał: Trebor
postów: 1209


umieszczony:
30 października 2012
16:45

  
Daj na forum plik, z którego chcesz zachować osobno arkusz summary.
napisał: testsep1
postów: 6


umieszczony:
30 października 2012
10:27

edytowany:
30 października 2012
13:30

  
hmm niestety wciąż nie działa poprawnie, kopiowanie juz śmiga, poza polem z datą, bo ja nie chcę daty systemowej tylko datę z komórki która mam w A8 w arkuszu Summary. Problem jednak w tym ze makro działa aż za dobrze i robi mi miszmasz ze wszystkich otwartych arkuszy w pliku.

Za to coś takiego mi w miare dobrze działa:

Sub Makro1()
    Sheets("Summary").Cells.Copy
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    Range("A1").Select
    ActiveWorkbook.SaveAs Filename:="C:\" & Range("C8") & "_" & Range("B8") & "_" & Format(Now, "yyyy-mm-dd") & ".xls", FileFormat:=xlNormal, _
       ReadOnlyRecommended:=True
End Sub



Tylko tu wrzuca mi cały arkusz a nie jeden skoroszyt Summary, do tego zawsze mi wyrzuca jakies komunikaty o błędach (prawdopodomnie z tego co się doczytałem to o tym ze nie kopiuje watości w innych arkuszach) i zamyka mi excela całkowicie, ale pliczek utworzony jest z poprawną nazwą i formatowaniem wewnątrz, tylko przy otwieraniu pyta o rekalkulacje danych i czy ma byc tylko do odczytu. Da radę coś z tym zrobić?
napisał: Trebor
postów: 1209


umieszczony:
29 października 2012
19:12

  
Spróbuj jak poniżej:
Sub zapisz()

Sheets("Summary").Cells.Copy
Workbooks.Add
Range("A1").PasteSpecial (xlPasteValues)
ActiveSheet.Name = "Summary"
ActiveWorkbook.SaveAs Filename:="C:\" & "SEP_Results_" & Range("B2").Value & "_" & Format(Now, "yyyy-mm-dd"), FileFormat:=xlNormal, _
ReadOnlyRecommended:=True

ActiveWorkbook.Close True
End Sub

napisał: testsep1
postów: 6


umieszczony:
29 października 2012
11:56

  
Wszystko juz pięknie śmiga, tylko bolą mnie dwie rzeczy:

1. Wartości po exporcie wyświetlaja mi się jako #REF, bo kopiowane są formuły a nie wartości komórek, a z racji tego że do exportu idzie tylko jeden arkusz z całego skoroszytu to nie ma on skąd pobrac sobie wartosci.


2. Kiedy do nazwy chcę wczepić komórkę w której jest formuła pobierająca wartość z innego arkusza wyskakuje mi błąd kompilacji, czasem nawet excel sie restartuje.

Przykład:
Komórka B2 zawiera w sobie formułę:

Cytat:
=IF(AB8=0;"----";IF(AC8="Empty";"----";INDIRECT($AC$8&"A"&$AB$8)))
i tu mi się ładnie pobiera model sprzętu jednak nie mogę wyświetlić podczas eksportu i wywala błąd w kompilatorze makra

A linia kodu w makro odpowiedzialna za nazwę wygląda tak:
Cytat:
ActiveWorkbook.SaveAs Filename:="C:\" & "SEP_Results_" & Range("B2") & "_" & Format(Now, "yyyy-mm-dd") & ".xls", FileFormat:=xlNormal, _
ReadOnlyRecommended:=True



Co wg was należy zmienić, żeby nazwa i dane w pliku były wyświetlane poprawnie?
napisał: Trebor
postów: 1209


umieszczony:
26 października 2012
16:22

edytowany:
26 października 2012
16:23

  
Pierwsza linia sprawdza czy w komórce D1 jest wpisana data. Jeśli jej tam nie ma to nic się nie dzieje. Z których komórek tworzona jest nazwa jak rozumiem umiesz zmienić.
napisał: testsep1
postów: 6


umieszczony:
26 października 2012
16:12

  
Kurcze, żaden plik sie nie tworzy. Chciałbym aby nazwa była tworzona na podstawie komórki d27 gdzie będzie wpisana jakaś wartość
napisał: Trebor
postów: 1209


umieszczony:
25 października 2012
17:14

  
W skrócie to coś w rodzaju:
Sub zapisz_summary()
If Not IsDate(Sheets("Summary").Range("D1")) Then Exit Sub

Sheets("Summary").Copy
ActiveWorkbook.SaveAs "C:\" & Format(Range("D1").Value, "dd_mm_yyyy_") & Range("D2")
ActiveWorkbook.Close
End Sub


Jednak musisz zadbać, aby w komórce nie było znaków zakazanych w nazwach plików.
napisał: testsep1
postów: 6


umieszczony:
24 października 2012
21:38

  
A gdybym chciał wyeksportować dany arkusz z całego skoroszytu, tak aby plik miał w nazwie datę z komórki i inne dane z komórek z arkusza.

Bo póki co się zastanawiam jak to makro powinno wyglądać, ale moje początkowe umiejętności mocno się ograniczają.

Przykładowa nazwa nowego pliku xlsx (zawiera wyeksportowany arkusz Summary z poprzedniego pliku): Date_[pa_no]_model.xlsx
napisał: Trebor
postów: 1209


umieszczony:
24 października 2012
04:11

  
=INDIRECT("Sheet1!C" & $B$7)

napisał: testsep1
postów: 6


umieszczony:
23 października 2012
23:19

  
A po angielsku jak to może wyglądać, bo mam office eng.
napisał: Trebor
postów: 1209


umieszczony:
23 października 2012
19:22

  
Przykładowa formuła:
=ADR.POŚR("Sheet1!C" & $B$7)

napisał: testsep1
postów: 6


umieszczony:
23 października 2012
18:28

  
nazwa pliku rozmiar
Zeszyt1.xlsx 11.40 kB

Wszystko rozbija się o to, że chciałem ułatwić sobie zadanie z codziennym raportowaniem, jednak nie wiem jak zrobić to aby raport generował się automatycznie w określonych komórkach. Wszystko jest zawarte w pliku.

Sheet1- zawiera dane tabelaryczne (wpisy jak w rekordzie - czyli cały wiersz dotyczy jednego dnia, a poszczególne komórki stanowią pola owego rekordu)

Summary - tu powinien sie generować raport po podaniu identyfikatora wiersza z Sheet1, wartości powinny być umieszczone w odpowiednich dla nich komórkach.

Czy ktoś może mi pomóc, nie jestem jakimś wprawnym programistą.

Pozdrawiam


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z