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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.07.2009, 15:39   #1
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию Как создать из excel файл txt? 2

При сохранении макросом текста в test.txt берутся данные из определенной ячейки. По-умолчанию, текст из ячейки записывается так: transkr = "мой текст " & Cells(1,1). На выходе получается: мой текст текстизячейки.
Надо: если в ячейке (1,1) больше одного слова, то по краям вписывался бы знак %. И чтобы на выходе получилось: мой текст %текст из ячейки%.
Код:
Sub Macros()
pute = ThisWorkbook.Path
transkr = "мой текст " & Cells(1, 1)
Open pute & "\test.txt" For Append As #1
Print #1, Format$(transkr)
Close #1
End Sub

Последний раз редактировалось ru3000; 05.07.2009 в 16:56.
ru3000 вне форума Ответить с цитированием
Старый 05.07.2009, 16:55   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Код:
If Len(Cells(1, 1)) > 1 Then
transkr = "мой текс" & "%" & Cells(1, 1) & "%"

Else

transkr = "мой текст" & Cells(1, 1)

End If
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.07.2009, 18:45   #3
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Спасибо за ответ. Только вот функция If Len(Cells(1, 1)) > 1 Then работает только с числами. А с текстом не получается.
Код:
Sub Macros()
pute = ThisWorkbook.Path
If Len(Cells(1, 1)) > 1 Then
transkr = "мой текст " & "%" & Cells(1, 1) & "%"
Else
transkr = "мой текст " & Cells(1, 1)
End If
Open pute & "\test.txt" For Append As #1
Print #1, Format$(transkr)
Close #1
End Sub
А мне надо, чтобы макрос распознавал сколько слов, а не чисел в ячейке.
Что здесь надо исправить?

Последний раз редактировалось ru3000; 05.07.2009 в 19:09.
ru3000 вне форума Ответить с цитированием
Старый 05.07.2009, 19:10   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Len (функция) - возвращает число символов строки или число байт, необходимых для хранения переменной
она скорей всего с цифрами не работала
Код:
Len (CStr(Cells(1, 1).Value))

Преобразуй вначале значение ячейки в строковую переменную,а потом вычисляй длинну
перепроверил,все работает и без преобразования

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

Последний раз редактировалось doober; 05.07.2009 в 19:15.
doober вне форума Ответить с цитированием
Старый 05.07.2009, 19:31   #5
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Все равно не получается. С числами все работает прекрасно. А с текстом нет. Если не трудно, исправьте мой код.
Вложения
Тип файла: zip Книга1.zip (12.1 Кб, 7 просмотров)

Последний раз редактировалось ru3000; 05.07.2009 в 19:34.
ru3000 вне форума Ответить с цитированием
Старый 05.07.2009, 19:41   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

дай текст с ячейки для примера,слова и цифры разделяються пробелом или нет
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.07.2009, 19:45   #7
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

Во вложении.
Я использую только текстовые ячейки. Если в ячейке 1,1 больше одного слова, тогда и нужны знаки %. А сейчас там только одно слово "проба" и все-равно записывается оно с %, хотя этого не должно быть.

Последний раз редактировалось ru3000; 05.07.2009 в 19:51.
ru3000 вне форума Ответить с цитированием
Старый 05.07.2009, 19:51   #8
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Это будет работать ,если слова и цифры разделены пробелом,если другмм знаком ,то в sp = Split(Cells(1, 1), " ", -1) в кавычки поставить знак раздела
Код:
Dim n, счетслов As Integer

Dim sp

Dim slovo As String

sp = Split(Cells(1, 1), " ", -1)

For n = 0 To UBound(sp)
If IsNumeric(sp(n)) = False Then

If (sp(n)) <> "" Then счетслов = счетслов + 1



End If
Next
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 05.07.2009, 19:54   #9
ru3000
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 163
По умолчанию

А теперь как ваш код привязать к моему?
Код:
Sub Macros()
pute = ThisWorkbook.Path
If Len(Cells(1, 1)) > 1 Then
transkr = "мой текст " & "%" & Cells(1, 1) & "%"
Else
transkr = "мой текст " & Cells(1, 1)
End If
Open pute & "\test.txt" For Append As #1
Print #1, Format$(transkr)
Close #1
End Sub
ru3000 вне форума Ответить с цитированием
Старый 05.07.2009, 20:03   #10
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Посмотри это то.что необходимо
Вложения
Тип файла: rar Книга1.rar (13.4 Кб, 13 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать из excel файл txt? ru3000 Microsoft Office Excel 5 20.05.2016 10:33
как открыть файл.txt Sergeu Общие вопросы Delphi 1 25.09.2008 13:24
Как создать новый файл Word из макроса Excel? Dorvir Microsoft Office Excel 12 08.07.2008 16:50
Как создать txt файл Titan123 Общие вопросы Delphi 7 29.06.2008 16:56
Как прочесть txt файл www.site.ru/info.txt BR17UY Работа с сетью в Delphi 1 16.04.2007 13:01