Страницы: 1
RSS
получить значение переменной
 
Всем приветы!) Недавно стал плотно изучать эксель и возник насущный вопрос) Как записать в файл значение переменной?  
 
Значение ячейки получаю (думаю, что получаю) через Range, а запись в файл через Print. Но когда пишу Print "a", он мне пишет в файле а, а не значение переменной.  
 
Вообще мне нужно сделать так, чтобы VBA через кнопку (форму) записывал значение ячейки в файл.    
 
Заранее благодарен)
 
{quote}{login=skymate}{date=18.03.2010 05:30}{thema=получить значение переменной}{post} чтобы VBA через кнопку (форму) записывал значение ячейки в файл. {/post}{/quote}  
Вот это расшифруйте.
 
Есть лист эксель, куда импортируется некая информация. После ее обработки я должен нажать на кнопочку на листе, которая запишет содержимое некой ячейки в файл для внешней программы. Соответственно, если не нажимаю, записи в файл не происходит. Скрипт кнопочки следующий:  
 
Sub Êíîïêà1_Ùåë÷îê()  
Dim s(1 To 1000) As String  
Dim oRange As Range  
Open "c:\Trans.tri" For Input As #1  
While Not EOF(1)  
k = k + 1  
Input #1, s(k)  
Wend  
Close #1  
Open "c:\Trans.tri" For Output As #1  
Set oRange = Worksheets("Ëèñò1").Range("B1")  
a = oRange  
Print #1, a  
Print #1, "0"  
For i = 1 To k  
Print #1, s(i)  
Next  
Close #1  
End Sub
 
почему никто не отвечает? неужели это очень сложный вопрос и ответ мне никто не даст?
 
потому что надо в файл не диапазон записывать, а текст.  
объявите переменную "а" как стринг, должно заработать.  
 
если не получится - выкладывайте файл
 
{quote}{login=}{date=21.03.2010 06:33}{thema=}{post}почему никто не отвечает? неужели это очень сложный вопрос и ответ мне никто не даст?{/post}{/quote}VBAшников здесь мало и сегодня выходной...  
Ждите Юрия М или The_Prist. Или завтра.
 
Андрей, мы ведь не знаем что за формат.tri - может там таблицы, может текст... От автора информация скупая.
 
формат .tri создается из txt простым переименованием. Там должны храниться данные в виде строчек. В одной строчке могут быть данные через пробел. Если нужна дополнительная информация, я все расскажу, что нужно) Попробую стринг и отпишусь
 
Да, обозначение переменной, как переменной str помогло, но в файле первая запись оказывается с пробелом, а все остальные (которые ниже) оказываются без него. Это некритично, конечно)  
 
Код теперь имеет вид:  
 
Sub Кнопка1_Щелчок()  
Dim s(1 To 1000) As String  
Dim strRange As Range  
Open "c:\Trans.tri" For Input As #1  
While Not EOF(1)  
k = k + 1  
Input #1, s(k)  
Wend  
Close #1  
Open "c:\Trans.tri" For Output As #1  
Set strRange = Worksheets("Лист2").Range("B1")  
Print #1, strRange  
For i = 1 To k  
Print #1, s(i)  
Next  
Close #1  
End Sub  
 
Файл прикрепил
 
Файл посмотреть не могу. А почему бы Вам просто не сохранять заданный диапазон как текстовый файл?
 
Так без пробела:  
Sub Кнопка1_Щелчок()  
Dim s(1 To 1000) As String  
Dim strRange$  
Open "c:\Trans.tri" For Input As #1  
While Not EOF(1)  
k = k + 1  
Input #1, s(k)  
Wend  
Close #1  
Open "c:\Trans.tri" For Output As #1  
strRange = Worksheets("Лист2").Range("B1").Value  
Print #1, strRange  
For i = 1 To k  
Print #1, s(i)  
Next  
Close #1  
End Sub  
 
Заменил range на string
 
{quote}{login=Юрий М}{date=21.03.2010 11:56}{thema=}{post}Файл посмотреть не могу. А почему бы Вам просто не сохранять заданный диапазон как текстовый файл?{/post}{/quote}  
 
Это невозможно, потому что в файл записываются данные для внешней программы. И нужно, чтобы пользователь сам решал, в какой именно момент это нужно
 
2 Hugo: я обязательно посмотрю утром и отпишусь :)
 
Писал сегодня похожий код (фрагмент):  
 
Open "c:\input.txt" For Input As #1    
Open "c:\output.txt" For Output As #2    
   
While Not EOF(1)    
Input #1, strValue    
Print #2, strValue    
End If    
Wend    
 
Если в строке есть ",,", то эту строку разбивает - эти символы выкидывает и с этого места пишет новую строку. Осторожно!
 
{quote}{login=Hugo}{date=21.03.2010 11:59}{thema=}{post}Так без пробела:  
Sub Кнопка1_Щелчок()  
Dim s(1 To 1000) As String  
Dim strRange$  
Open "c:\Trans.tri" For Input As #1  
While Not EOF(1)  
k = k + 1  
Input #1, s(k)  
Wend  
Close #1  
Open "c:\Trans.tri" For Output As #1  
strRange = Worksheets("Лист2").Range("B1").Value  
Print #1, strRange  
For i = 1 To k  
Print #1, s(i)  
Next  
Close #1  
End Sub  
 
Заменил range на string{/post}{/quote}  
 
не, скрипт не прокатил, но все и так нормально идет, спасибо)а последний твой пост я не понял
Страницы: 1
Читают тему
Наверх