Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Перенос данных из Excel в текстовый файл Добавлено: 04.05.09 14:48  

Автор вопроса:  Таня | ICQ: 410031407 
Есть таблица в Excel с данными

ТБН Счет %
0125 57 736,07р.
0126 57 679,45р.

как реализовать процедуру переноса данных таблицы в текстовый файл, выходной файл должен иметь такую структуру

0125 57 736.07
0126 57 679.45

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #1
Добавлено: 04.05.09 15:17
как реализовать процедуру

ммм,
Open file for Output as 1
str=range("a2";) & range("b2";) ......
print 1,str
close 1

Ответить

Номер ответа: 2
Автор ответа:
 Таня



ICQ: 410031407 

Вопросов: 11
Ответов: 23
 Профиль | | #2 Добавлено: 04.05.09 15:34
а можно поподробнее объяснить ход действий, мне не понятно

Ответить

Номер ответа: 3
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #3
Добавлено: 04.05.09 15:45
http://www.specialist.ru/programs/course.asp?idc=848

Ответить

Номер ответа: 4
Автор ответа:
 Таня



ICQ: 410031407 

Вопросов: 11
Ответов: 23
 Профиль | | #4 Добавлено: 04.05.09 15:51
очень смешно..

Ответить

Номер ответа: 5
Автор ответа:
 Arvitaly



ICQ: 301746136 

Вопросов: 28
Ответов: 549
 Web-сайт: okazani.ru
 Профиль | | #5
Добавлено: 04.05.09 16:15
Хорошо можешь мне заплатить

Ответить

Номер ответа: 6
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #6 Добавлено: 04.05.09 16:39
Sub CreateAndOpen()
Dim FileNum
Dim FileName As String
Dim Str As String
Dim MyRange As Range

FileNum = FreeFile
FileName = InputBox("Введи имя файла:";)
Set MyRange = Selection 'Для того чтобы все работала выдели все ячейки из которых будешь выгружать данные

Open "C:\" & FileName & ".txt" For Output As #FileNum 'Вместо С:\ напиши путь куда будешь сохранять файл

For Each Cell In MyRange
    Str = Replace(Cell, "р.", "";)
    Print #FileNum, Str
Next Cell

Close #FileNum
CreateObject("WScript.Shell";).Run "C:\" & FileName & ".txt"
End Sub

Ответить

Номер ответа: 7
Автор ответа:
 Таня



ICQ: 410031407 

Вопросов: 11
Ответов: 23
 Профиль | | #7 Добавлено: 05.05.09 11:18
Михаил a.k.a. AngryBadger, болшое спасибо за помощь, единственное, появилась проблемка: при переносе в текстовый файл, данные переносятся таким образом:
 0125
 57
 736.07
 0126
 57
 679.45
а нужно ,чтобы как в начальном файле .xls

0125 57 736.07
0126 57 679.45

т.е , чтобы данные заносились в строку, заранее спасибо

Ответить

Номер ответа: 8
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #8 Добавлено: 05.05.09 11:56
А у Вас, как я понимаю, число растянуто на 3 ячейки?

Ответить

Номер ответа: 9
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #9 Добавлено: 05.05.09 12:05
¬¦¬г¬Э¬Ъ ¬п¬д¬а ¬д¬С¬Ь, ¬д¬а:

Sub CreateAndOpen()
Dim FileNum
Dim FileName As String
Dim Str As String
Dim MyRange As Range
Dim i As Double

FileNum = FreeFile
FileName = InputBox("¬Ј¬У¬Ц¬Х¬Ъ¬д¬Ц ¬Я¬С¬Щ¬У¬С¬Я¬Ъ¬Ц ¬ж¬С¬Ы¬Э¬С ¬Х¬Э¬с ¬У¬н¬Ф¬в¬е¬Щ¬Ь¬Ъ:";)
Set MyRange = Selection

Open "C:\" & FileName & ".txt" For Output As #FileNum

For i = 1 To MyRange.Rows.Count
    Str = MyRange.Cells(i, 1) & " " & MyRange.Cells(i, 2) & " " & Replace(MyRange.Cells(i, 3), "©Ј.", "";)
    Print #FileNum, Str
Next i

Close #FileNum
CreateObject("WScript.Shell";).Run "C:\" & FileName & ".txt"
End Sub

Ответить

Номер ответа: 10
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #10 Добавлено: 05.05.09 12:09
Если это так то, смотри код выше. В скобках у инпутбокса "Введи имя файла:"
В цикле For - Next:

Str = MyRange.Cells(i, 1) & " " & MyRange.Cells(i, 2) & " " & Replace(MyRange.Cells(i, 3), " ", "";)
Print #FileNum, Str

Ответить

Номер ответа: 11
Автор ответа:
 Таня



ICQ: 410031407 

Вопросов: 11
Ответов: 23
 Профиль | | #11 Добавлено: 05.05.09 13:23
Да, спасибки, теперь то, что надо, но я не предусмотрела, что на листе Excel по столбцу №3 у меня стоит фильтр. Так вот надо,чтобы только отфильтрованные данные попадали в текстовый файл, а он отправляет всю инфу, подскажите, пожалуйста,как это реализовать

Ответить

Номер ответа: 12
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #12 Добавлено: 05.05.09 15:45
Вроде работает

Sub CreateAndOpen()
Dim FileNum
Dim FileName As String
Dim Str As String
Dim MyRange As Range
Dim i As Double
Dim k As Double
Dim MyArray As Variant
Dim Item As Variant

FileNum = FreeFile
FileName = InputBox("Введи имя файла для выгрузки:";)
Set MyRange = Selection.SpecialCells(xlCellTypeVisible)

Open "C:\" & FileName & ".txt" For Output As #FileNum
ReDim MyArray(MyRange.Cells.Count)
For Each Item In MyRange
i = i + 1
MyArray(i) = Item
Next Item


For i = 1 To MyRange.Cells.Count / MyRange.Columns.Count
    Str = MyArray(i + k) & " " & MyArray(i + k + 1) & " " & Replace(MyArray(i + k + 2), "р.", "";)
    k = k + 2
    Print #FileNum, Str
Next i

Close #FileNum
CreateObject("WScript.Shell";).Run "C:\" & FileName & ".txt"
End Sub

Ответить

Номер ответа: 13
Автор ответа:
 Таня



ICQ: 410031407 

Вопросов: 11
Ответов: 23
 Профиль | | #13 Добавлено: 05.05.09 16:35
Да, на самом деле работает, как приятно, что есть такие люди как Вы Михаил a.k.a. AngryBadger, которые помогают нам чайникам. Но у меня возник еще вопрос, а если мне понадобится значения не из всех столбцов, а например из 1 и 3, а если их будет не 3, например 7, и понадобится из 1 и 7, как такой случай реализовать, подскажите ,пожалуйста

Ответить

Номер ответа: 14
Автор ответа:
 AngryBadger



Вопросов: 33
Ответов: 245
 Профиль | | #14 Добавлено: 05.05.09 17:04
В MyArray у тебя подряд записаны значения выделенных тобой ячеек, поэтому изменяя строку
Str = MyArray(i + k) & " " & MyArray(i + k + 1) & " " & Replace(MyArray(i + k + 2), "р.", ""

ты можешь получать разные результаты, например выделев свои ячейки и изменив строку на
Str = MyArray(i + k) & " " & Replace(MyArray(i + k + 2), "р.", ""

ты получишь значение из 1 и 3 ячейки

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам