Страницы: 1
RSS
вылезает знак при выполнении макроса
 
Здраствуйте,при выполнении макроса в ячейке иногда вылезает знак -   ; (точка с запятой),как это исправить?!
 
не запускать этот макрос.

какой, кстати?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Sub Макрос6()
   If Range("M19") = 6 Then
   ID = Int((1000000 * Rnd) + 1)
       Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
       Open Filename For Append Shared As #1 'открыть файл
       Data = "ACTION=NEW_ORDER; TRANS_ID=" & ID & "; OPERATION=S; PRICE=" & Лист1.Cells(30, 3) & "; TYPE=M; QUANTITY=" & Лист2.Cells(5, 2) & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; CLIENT_CODE=" & Лист2.Cells(3, 2) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";"
       Print #1, Data
       Close #1
   End If
End Sub


причем это не всегда вылезает знак ,а иногда
 
этот макрос вообще ничего в ячейки листа писать не может. потому что не пишет.
вы уверены?
и какая у вас версия Excel?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
версия 2003!я потом скин пришлю пришлю,когда ошибку эту увижу!а к кнопке привязан макрос такого плана
Код
Sub Макрос6() 
 ID = Int((1000000 * Rnd) + 1) 
 Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки 
 Open Filename For Append Shared As #1 'открыть файл 
 Data = "ACTION=NEW_ORDER; TRANS_ID=" & ID & "; OPERATION=S; PRICE=" & Лист1.Cells(30, 3) & "; TYPE=M; QUANTITY=" & Лист2.Cells(5, 2) & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; CLIENT_CODE=" & Лист2.Cells(3, 2) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";" 
 Print #1, Data 
 Close #1 
End Sub

и когда нажимаешь на кнопку,то вылезается знак на ячейке по которой послений раз кликал мышью!

Применяйте тэги (Для кода - кнопка "оформление текста в виде кода"[МОДЕРАТОРЫ]
 
и еще данные поступают по DDE
 
и это именно содержится в ячейке?
или просто отображается на экране, а в ячейке пусто?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
просто в ячейке вылезает точка с запятой и приостанавливается вывод по dde
 
куда вывод?
я вижу. что у вас пишется торговый приказ в файл.
предположительно - текстовый.
если он в момент попытки доступа к нему будет занят другим приложением...
то...
ну наверное. просто ошибка бы вышла.
а вообще-то, наверное, немного иначе делать надо - пытаться открыть файл, если не получилось - в цикле снова пытаться на протяжении какого-то разумного времени, затем корректный выход из макроса. без записи в файл (раз он не открылся).
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
он записывает в файл tri ,а файл tri обрабатывается программой (quik-это программа для  биржы)примерно раз 0,1 секунду(это я робота для биржы делаю).а как бы в вашем варианте этот макрос выглядел бы?
 
ммм... пока разбираюсь...
не писал я роботов  :(
и проверить не на ком.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
я думаю что вы правы!файл занят программой и думаю что вместо ошибки выдает точку с запятой
 
да не должно такого быть.
теоретически.
(ушёл искать подопытных кроликов)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Не проверял, просто как вариант исходя из логики кода:
Код
Sub Макрос6()
 ID = Int((1000000 * Rnd) + 1)
 Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
 Open Filename For Append Shared As #1 'открыть файл
 Data = "ACTION=NEW_ORDER; TRANS_ID=" & ID & "; OPERATION=S; PRICE=" & Лист1.Cells(30, 3) & "; TYPE=M; QUANTITY=" & Лист2.Cells(5, 2) & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; CLIENT_CODE=" & Лист2.Cells(3, 2) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";"
 If Data <> ";" Then Print #1, Data
 Close #1
End Sub


Почему так решил - у Вас идет запись данных в переменную и в конце к этим данным прибавляется точка-с-запятой. Если данных не было получено - переменная получает сцепку: "" & ";", что в результате даст, естественно, только ";".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
рытаюсь дополнительно вставить строку еще одну,но пишет что синтаксицеская ошибка
Sub снятие_заявок()
   ID = Int((1000000 * Rnd) + 1)
       Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
       Open Filename For Append Shared As #1 'открыть файл
       Data = "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & ";";
       "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "
       Print #1, Data
       Close #1
End Sub
надо чтобы в tri файле было две строчки
как долно тогда быть правильно?
 
никто не подсккажет?
 
Код
Data = "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID _
  & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) _
  & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & ";" & Chr(10) _ 
  & "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID _
  & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) _
  & "; BASE_CONTRACT=" & Лист2.Cells(4, 3)


пс. Александр, как Вы полагаете - для кого модераторы написали красными буквами сообщение в Вашем посте #5?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Что это такое?
BASE_CONTRACT=" & Лист2.Cells(4, 3) & "
Что за амперсанд и кавычки там, где за ними ничего не следует?
И в середине какая-то точка-с-запятой вне кавычек. Это так нужно? Вы же запрос формируете внутри текстовой переменной, зачем пытаться её разорвать? Думаю так заработает:
Код
Data = "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "; ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3)


И Вы почему-то не пишите - предыдущая проблема решена или нет? Или нам это нужно и мы должны догадываться?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
изаините!на пятое сообщение я внимания не отобразил,т.к. я знаю что писал,а то что модераторы могут что то в нем написать,не знал!С предыдущей проблемой я справляюсь:просто сворачиваю эксель и нормально работает все!потом попробую ваш вариант!В моем последнем коде в середине точка-с-запятой вне кавычек-это я пытался разделить строки,т.к. ACTION=KILL_ALL_FUTURES_ORDERS должен начинаться с новой строки!The_Prist,в вашем коде все записывается в одну строку.Только не ругайтесь! :)
 
Я и не планировал ругаться, но в новую строку надо записывать данные не запросом а в цикле, так где Вы Print пишите. Только я не поня по какому принципу вторая строка должна формироваться. Судя по запросу - Вы запрашиваете абсолютно одинаковые данные, но два раза. Так надо или Вы что-то другое хотели? В общем исходя из того, что у Вас написано - держите такой вариант:
Код
Sub Макрос6()
 ID = Int((1000000 * Rnd) + 1)
 Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
 Open Filename For Append Shared As #1 'открыть файл
 sData = "ACTION=NEW_ORDER; TRANS_ID=" & ID & "; OPERATION=S; PRICE=" & Лист1.Cells(30, 3) & "; TYPE=M; QUANTITY=" & Лист2.Cells(5, 2) & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; CLIENT_CODE=" & Лист2.Cells(3, 2) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";"
 If sData <> ";" Then Print #1, sData & vbNewLine & sData
 Close #1
End Sub 

Если не подходит - пишите критерии создания запроса.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
я хотел другое!ACTION может иметь другое значение!уже в принципе придумал и работает

Sub снятие_заявок()
ID = Int((1000000 * Rnd) + 1)
Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
Open Filename For Append Shared As #1 'открыть файл
Data = "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";"
Print #1, Data
Close #1
ID = Int((1000000 * Rnd) + 1)
Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки
Open Filename For Append Shared As #1 'открыть файл
Data = "ACTION=123; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";"
Print #1, Data
Close #
 
не знаю как сделать теги
 
Однако - потренируемся?!. И коды , и теги... Как вариант... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Код
[/CODE]Sub снятие_заявок() 
 ID = Int((1000000 * Rnd) + 1) 
 Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки 
 Open Filename For Append Shared As #1 'открыть файл 
 Data = "ACTION=KILL_ALL_FUTURES_ORDERS; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";" 
 Print #1, Data 
 Close #1 
 ID = Int((1000000 * Rnd) + 1) 
 Filename = Лист2.Cells(1, 2) 'введение в макрос пути к файлу из ячейки 
 Open Filename For Append Shared As #1 'открыть файл 
 Data = "ACTION=123; TRANS_ID=" & ID & "; CLASSCODE=SPBFUT; SECCODE=" & Лист2.Cells(4, 2) & "; BASE_CONTRACT=" & Лист2.Cells(4, 3) & "; ACCOUNT=" & Лист2.Cells(2, 2) & ";" 
 Print #1, Data 
 Close #[CODE]
 
блин,а code виден
Страницы: 1
Наверх