Страницы: 1
RSS
Сохранение ячеек в отдельные файлы
 
Доброго времени суток.  
Необходим макрос который будет сохранять выделенные ячейки в отдельные файлы (содержание каждой ячейки в выделенном диапазоне в отдельный файл). Сохранение в туже директорию где находится исходный файл. Сохранение требуется в формате *.txt
 
Проверяйте - результат в файле: http://excelvba.ru/XL_Files/Sample__22-11-2010__5-55-08.zip  
(сначала извлеките файл из архива куда-нибудь на комп)  
 
 
Вот весь код:  
 
Sub test()  
   Dim cell As Range  
   Путь = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")  
   For Each cell In Selection.Cells  
       SaveTXTfile Путь & cell.Address & ".txt", cell  
   Next cell  
End Sub  
 
Function SaveTXTfile(ByVal filename As String, ByVal txt As String) As Boolean  
   On Error Resume Next: Err.Clear  
   Set fso = CreateObject("scripting.filesystemobject")  
   Set ts = fso.CreateTextFile(filename, True)  
   ts.Write txt: ts.Close  
   SaveTXTfile = Err = 0  
   Set ts = Nothing: Set fso = Nothing  
End Function  
 
 
Макрос создаёт текстовые файлы примерно с такими именами:  
(вы же не сказали, как следует именовать файлы...)  
 
$D$14.txt  
$B$15.txt  
$B$16.txt  
$B$17.txt  
$C$12.txt  
$C$13.txt  
$C$14.txt  
$C$15.txt  
$C$16.txt  
$C$17.txt  
$D$12.txt  
$D$13.txt
 
Благодарю, именно то что нужно.
 
2 EducatedFool  
 
Привет, Игорь!  
Небольшая поправка к этой строке:  
 
Путь = Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")  
 
Хотя вероятность этого небольшая, имя книги может содержаться в пути. Например, папка называется так же, как книга:  
 
?ThisWorkbook.fullname  
B:\Temp\post_176738.xls\post_176738.xls  
 
Тогда  
?Replace(ThisWorkbook.FullName, ThisWorkbook.Name, "")  
B:\Temp\\  
 
И возникает ошибка.  
Наверно, лучше  
Путь = ThisWorkbook.path & "\"  
или  
Путь = ThisWorkbook.path & application.PathSeparator
 
Приветствую, Казанский.  
 
Путь = ThisWorkbook.path & "\" - это плохой вариант.  
Намного хуже моего, если честно.  
 
Я прекрасно понимаю, что вполне возможен описанный тобой случай, но это - редкость.  
 
А вот случаев, когда люди сохраняют файлы в корень диска, - предостаточно.  
И тут вариант ThisWorkbook.path & "\" выдаёт ошибку "c:\\"  
 
Я, конечно, могу написать безошибочный вариант (пусть кода будет на 20 символов больше), но... люди ведь порой спрашивают, что делает та или иная строка кода...  
А объяснять лишние хитрости в плане кода как-то напрягает)  
 
Как по мне, правильным будет вариант типа такого:  
Путь = Replace(ThisWorkbook.FullName & "\\\", ThisWorkbook.Name & "\\\", "")
 
> А вот случаев, когда люди сохраняют файлы в корень диска, - предостаточно.  
И тут вариант ThisWorkbook.path & "\" выдаёт ошибку "c:\\"  
 
Не вижу проблемы! Сохранил в корень диска, вот что получается:  
 
?ThisWorkbook.path' & application.PathSeparator    
C:  
 
?ThisWorkbook.path & application.PathSeparator    
C:\  
 
Это WinXP, Офис 2007. Может, на более поздних версиях по-другому?
 
{quote}{login=Казанский}{date=22.11.2010 02:32}{thema=}{post}> А вот случаев, когда люди сохраняют файлы в корень диска, - предостаточно.  
И тут вариант ThisWorkbook.path & "\" выдаёт ошибку "c:\\"  
 
Не вижу проблемы! Сохранил в корень диска, вот что получается:  
 
?ThisWorkbook.path' & application.PathSeparator    
C:  
 
?ThisWorkbook.path & application.PathSeparator    
C:\  
 
Это WinXP, Офис 2007. Может, на более поздних версиях по-другому?{/post}{/quote}  
 
Вот блин... столько времени писал макросы, и до сих пор заблуждался...  
 
То ли где-то прочитал, то ли сам сталкивался с такой проблемой - что Workbook.path возвращает путь со слешем для файлов из корня диска...  
Оказывается, ничего подобного.  
Может, с сетевыми путями проблема была, - точно не помню уже, почему я отказался от Workbook.path  
 
Убедили вы меня - теперь снова буду использовать этот способ)
Страницы: 1
Читают тему
Наверх