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

  tytuł wątku:
Wątki dyskusji

Makro formatujące komórki i zmieniające plik na csv.


otwartyotwarty rozpoczął: Marie postów: 6



napisał: Trebor
postów: 1209


umieszczony:
22 października 2012
19:06

  
Zmiana miejsca zapisu może być zapisana w postaci:
.SaveAs "C:\Documents and Settings\Admin\Pulpit\" & Replace(plik, ".xlsx", ""), FileFormat:=xlCSV, Local:=True


czyli wskazujesz konkretny folder wraz z nazwą pliku.

Co do formatu CSV to sprawa się komplikuje. Pobieżny przegląd wątków w internecie nie daje satysfakcjonującej odpowiedzi. W wolnej chwili spróbuję zgłębić problem.
napisał: Marie
postów: 22


umieszczony:
21 października 2012
21:04

  
Ja znam Excela, funkcje i różne takie fajne rzeczy. VBA nigdy się nie zajmowałam, choć przyznaję, że nie raz przydało mi się tak napisane makro. Na pewno jakiś kurs przydałby mi się... a jak na razie staram się poszukać pomocy na różnych portalach i forach...
napisał: Trebor
postów: 1209


umieszczony:
21 października 2012
20:58

  
Czy nie kusi Cię, aby samej cokolwiek spróbować?
napisał: Marie
postów: 22


umieszczony:
21 października 2012
20:44

  
nazwa pliku rozmiar
Przykladowy_Plik.csv 105 B

Fajnie, tylko nie do końca robi to co chciałam.

1. Chciałabym, by zapisał to jako plik csv rozdzielony przecinkami, ale żeby każda dana była w osobnej komórce (tak jak z załączniku),

2. Oraz żeby się zapisywał w innym miejscu niż poprzedni.

Na przykład plik Excelowy pochodził z katalogu o ścieżce np.: C:\Documents and Settings\Admin\Moje dokumenty\Pobieranie\ (jak w przykładzie),

Natomiast tak sformatowany i w formacie plik csv zapisywał się w katalogu o ścieżce np.: C:\Documents and Settings\Admin\Moje dokumenty\Pliki_CSV\
napisał: Trebor
postów: 1209


umieszczony:
21 października 2012
19:36

  
Sprawdź
Sub marie()
Dim Dukt As String, plik As String, i As Long, wiersz As Long, kolumna As Integer
Dim skoro As Object

Dukt = "C:\Documents and Settings\Admin\Moje dokumenty\Pobieranie\"
plik = Dir(Dukt & "*.xlsx")
Do
If plik = "" Then Exit Do


Set skoro = GetObject(Dukt & plik)
With skoro.Worksheets(1)
kolumna = .Cells.Find(What:="*", After:=Cells(1, 1), _
               SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
wiersz = .Cells.Find(What:="*", After:=Cells(1, 1), _
               SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
If kolumna > 3 Then .Range(.Cells(1, 4), .Cells(Row, kolumna)).Clear

For i = wiersz To 1 Step -1
If .Cells(i, 1) = "" Then
        .Rows(i).Delete
            Else
                .Cells(i, 3) = .Cells(i, 3) * 100
                    End If
Next i
.SaveAs Dukt & Replace(plik, "xlsx", "CSV"), FileFormat:=xlCSV
 skoro.Close True
plik = Dir
End With
Loop
        
End Sub

napisał: Marie
postów: 22


umieszczony:
17 października 2012
21:06

  
nazwa pliku rozmiar
PrzykladowyPlik.xlsx 8.31 kB

Witam,
Mam problem z pomysłem na makro (gdyż jestem kompletnym amatorem w tym temacie no i jednocześnie samoukiem korzystającym w pomocy na przykład na forach).
Chciałabym napisać takie marko w VBA, żeby: (opiszę w punktach, żeby było łatwiej):

1. Z folderu na przykład o ścieżce C:\Moje\Excel otwierało pierwszy zapisany tam plik Excelowy (taki jak w przykładzie),

2. W otwartym pliku trzeba nadal całej kolumnie C format liczbowy, bez separatora, z dokładnością do dwóch miejsc po przecinku,

3. Usunąć wszystkie kolumny od D do końca (w razie czego jakby znajdowały się tam jakieś dane lub inne formatowanie komórki),

4. Usunąć wszystkie wiersze począwszy pod pierwszego, który w kolumnie A jest pusty (nawet jeśli kolumna C jest wypełniona) - czyli w załączonym przykładzie od wiersza 6 do końca (w razie czego jakby znajdowały się tam jakieś dane lub inne formatowanie komórki), liczba wierszy zapisanych jest różna,

5. Zapisać tak przygotowany plik jako format csv rozdzielany przecinkami w folderze na przykład o ścieżce C:\Moje\Pliki_csv pod taką samą nazwą jaką miał plik Excelowy,

6. Następnie przejść do kolejnego skoroszytu Excelowego (tzn. otworzyć kolejny plik, sformatować, pousuwać kolumny i wiersze oraz zapisać jako csv) i tak do końca wszystkich plików w folderze C:\Moje\Excel (czyli finalnie powinno być tyle samo plików Excelowych co plików csv.).

Taki mam pomysł. Jednakże z wykonaniem gorzej. Dlatego proszę Was o pomoc.
Nie wiem też czy napisane makro miałoby się znajdować na przykład w osobnym arkuszu? Nie mam pomysłu i liczę na pomoc.
Z góry dziękuję za każdą pomoc.


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z