Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2009, 08:34   #1
flylive
 
Регистрация: 01.04.2009
Сообщений: 7
По умолчанию Автоматическое сохранение листа в файл Csv

Доброе время суток. Подскажите, возможно ли сделать такое, и если возможно, то как. У меня имеется структурированная таблица на ЛИСТ1 exl-файла, каждая строка данные по одному клиенту. ЛИСТ2 форма, которую необходимо заполнить для каждого клиента и сохранить в файл CSV. Я сдела с помощью функции =ВПР() автозаполнение ячеек формы при заполнеии имени клиента. Так вот сам вопрос. Можно ли сделать такой макрос, который заполнит форму, сохранит с именем (имя взять из 2- ячеек формы B3 и C3) в формате csv и так для всех клиентов.
Вложения
Тип файла: rar Данные на апрель.rar (11.9 Кб, 16 просмотров)
flylive вне форума Ответить с цитированием
Старый 02.04.2009, 09:03   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Вот весь макрос:
Код:
Sub СозданиеФайлов()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False: колво = 0
    fp = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "CSV - файлы\")
    On Error Resume Next: MkDir fp: Dim cell As Range
    For Each cell In Лист1.Range(Лист1.[a4], Лист1.[a65000].End(xlUp))
        If cell <> "" Then
            With Лист2
                .[b3] = cell: .Calculate: .Copy: DoEvents: колво = колво + 1
                ActiveWorkbook.SaveAs fp & cell & " - " & .[c3] & ".csv", xlCSV
                ActiveWorkbook.Close False
            End With
        End If
    Next cell: Application.DisplayAlerts = True
End Sub
Нажмите зелёную кнопочку в прикреплённом файле:
Вложения
Тип файла: rar Данные на апрель.rar (18.9 Кб, 54 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 02.04.2009, 09:20   #3
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

вот держите альфу версию.
есть глюк если в названии ООО есть кавычки "
исправлю, позднее.
Вложения
Тип файла: rar Данные на апрель.rar (20.4 Кб, 17 просмотров)
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 02.04.2009, 09:27   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию 2 Marchuk

Если в строке
Код:
ActiveWorkbook.SaveAs Filename:= _
        ThisWorkbook.Path & Range("B3").Value & Range("C3").Value & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
после ThisWorkbook.Path не добавить "\", то макрос будет корректно работать только в одном случае - если файл сохранён в корневом каталоге диска.
EducatedFool вне форума Ответить с цитированием
Старый 02.04.2009, 09:30   #5
flylive
 
Регистрация: 01.04.2009
Сообщений: 7
По умолчанию

Спасибо огромное.
Теперь не могу сообразить - как настроить Excel или может что-то иное, чтобы созданные csv файлы открывались и всю инфо распределяли по ячейкам. У меня разделитель текста стоит ; а не , как получилось в новых файлах.
flylive вне форума Ответить с цитированием
Старый 02.04.2009, 09:34   #6
flylive
 
Регистрация: 01.04.2009
Сообщений: 7
По умолчанию

и еще появились " " как разделитель текста,
а про ; и , - эт разделитель ячеек - или как там их
грубо говоря строка вашего файла:
ЦОК:,C01016,"Куликова С.П., ИП"
а мне было бы удобнее:
ЦОК:;C01016;Куликов А.З., ИП

как быть...
flylive вне форума Ответить с цитированием
Старый 02.04.2009, 09:36   #7
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Если в строке
Код:
ActiveWorkbook.SaveAs Filename:= _
        ThisWorkbook.Path & Range("B3").Value & Range("C3").Value & ".csv", _
        FileFormat:=xlCSV, CreateBackup:=False
после ThisWorkbook.Path не добавить "\", то макрос будет корректно работать только в одном случае - если файл сохранён в корневом каталоге диска.
ага спс , не обратил внимание, тот-то думаю что-то он странно сохраняет.
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 02.04.2009, 09:52   #8
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

БЕТА версия

Цитата:
Private Sub CommandButton1_Click()

Dim iLastRow As Long
Dim str As String
Application.DisplayAlerts = False 'не показывать сообщения
Application.ScreenUpdating = False 'отключение обновления экрана

iLastRow = ThisWorkbook.Sheets("Лист1").Cells( Rows.Count, "A").End(xlUp).Row
ThisWorkbook.Sheets(2).Select

For i = 4 To iLastRow
Range("B3").Value = Sheets("Лист1").Range("A" & i).Value
str = Range("B3").Text
str = str & Replace(Range("C3").Text, " ", "")
str = Replace(str, Chr(34), "")
str = Replace(str, "'", "")
str = Replace(str, ":", "")
str = Replace(str, ";", "")
str = Replace(str, ",", "")
'str = Replace(str, ".", "") 'можно и точки удалять
Sheets(2).Copy
ActiveWorkbook.SaveAs Filename:= _
ThisWorkbook.Path & "\" & str & ".csv", _
FileFormat:=xlCSV, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=True

ThisWorkbook.Activate
Next i
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Старый 02.04.2009, 10:04   #9
flylive
 
Регистрация: 01.04.2009
Сообщений: 7
По умолчанию

неа не работает, все тоже самое
нашла вот какую тему:
http://www.programmersforum.ru/showthread.php?t=24188
мало что понятно и влияет ли это на дело, Но настройки я менять не смею.
У меня стоит РАЗДЕЛИТЕЛЬ ЭЛЕМЕНТОВ СПИСКА ;
flylive вне форума Ответить с цитированием
Старый 02.04.2009, 10:14   #10
Marchuk
Пользователь
 
Аватар для Marchuk
 
Регистрация: 27.03.2009
Сообщений: 78
По умолчанию

Цитата:
Сообщение от flylive Посмотреть сообщение
неа не работает, все тоже самое
нашла вот какую тему:
http://www.programmersforum.ru/showthread.php?t=24188
мало что понятно и влияет ли это на дело, Но настройки я менять не смею.
У меня стоит РАЗДЕЛИТЕЛЬ ЭЛЕМЕНТОВ СПИСКА ;
я так попял что разделитель нужен не "," а ";" так чтоль?
Знание формул - Слабо; Знание макросов - Средне;

Оформляем воздушными шарами.
Marchuk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Экспорт в csv и импорт из csv cent Microsoft Office Excel 12 28.12.2008 19:50
Автоматическое заполнение данных из другого листа usgaz@list.ru Microsoft Office Excel 8 17.10.2008 10:41
Сохранение текущего листа Excel в отдельный файл IpS Microsoft Office Excel 10 04.10.2008 13:45
csv-файл большие числа nevadimka Microsoft Office Excel 1 14.03.2008 10:25
Автоматическое сохранение AndreichSB Microsoft Office Access 1 03.01.2007 23:15