Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10872
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 5307
∙ повысить рейтинг »
Гуревич Александр Львович
Статус: Профессионал
Рейтинг: 4412
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Basic/VBA

Номер выпуска:1087
Дата выхода:03.06.2013, 10:30
Администратор рассылки:Андреенков Владимир (Профессор)
Подписчиков / экспертов:74 / 36
Вопросов / ответов:3 / 6

Консультация # 173955: Доброго времени суток! VBA Access Скажите пожалуйста, можно ли добавить запись в таблицу при помощи кода VBA если нет формы, на основе этой таблицы....


Консультация # 153625: Добрый вечер, Уважаемые Эксперты! Помогите, пожалуйста с решением задачи: Дана строка произвольной длины. Выяснить, имеются ли в строке числа и выделить их.
Код :
Sub Ex()
Dim строчка As String
Sheets("Лист1").Select
C
...
Консультация # 32970: Приветствую вас, уважаемые Эксперты. Продолжение вопросов 32064 и 32222 1. --- У Екселя есть событие Private Sub Workbook_Open Поставил как сказали - в заголовок макроса встроенной к...

Консультация # 173955:

Доброго времени суток!
VBA Access
Скажите пожалуйста, можно ли добавить запись в таблицу при помощи кода VBA если нет формы, на основе этой таблицы.

Дата отправки: 04.11.2009, 09:21
Вопрос задал: fomservl (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует HookEst:

Здравствуйте, fomservl.
можно...
способов множество...
например создав предварительно объект "Запрос"(с типом запроса на добавление) а в коде VBA вызвав его метод Execute
допустим у нас есть таблица "Таблица1" с двумя полями: [id] - счетчик и [value] - строка...
создаем запрос "Запрос1", в SQL режиме пишем в него:

Код :
INSERT INTO Таблица1 ( [value]
) VALUES (NewValue);


теперь, в VBA мы можем написать:
Код :
Sub t()
    With CurrentDb.QueryDefs("Запрос1")
        .Parameters("NewValue") = "Новое значение"
        .Execute
    End With
End Sub

выполнение этого кода, добавит запись в Таблица1 c value = "Новое значение"....

также мы можем напрямую выполнять SQL запросы на добавление записей, но здесь приходиться учитывать синтаксис SQL:
Код :
Sub t2()
    CurrentDb.Execute "INSERT INTO [Таблица1 ] ([value]) VALUES (""Новое значение"")"
End Sub



можно использовать Recordset...
например, для ADODB:
Код :
Sub t3()
    With New ADODB.Recordset
        .Open "Таблица1", CurrentProject.Connection, adOpenDynamic, adLockOptimistic
        .AddNew
        .Fields("value") = "Новое значение"
        .Update
        .Close
    End With
End Sub

и т.д. и т.п.
Успехов..

Консультировал: HookEst
Дата отправки: 05.11.2009, 03:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 153625:

Добрый вечер, Уважаемые Эксперты!
Помогите, пожалуйста с решением задачи: Дана строка произвольной длины. Выяснить, имеются ли в строке числа и выделить их.

Код :
Sub Ex()
Dim строчка As String
Sheets("Лист1").Select
Cells.Clear
Cells(1, 1) = "Лабораторная работа №2. Обработка строк"
Cells(2, 1) = "Задание:"
Cells(3, 1) = "Выяснить имеются ли в строке числа, и выделить их."
Cells(4, 1) = "Выполнил Ст.гр."
Cells(5, 1) = "Исходный массив:"
строчка = InputBox("введите предложение из нескольких слов, используя цифры")
Cells(6, 1) = строчка
Cells(7, 1) = "Результат решения"
Cells(8, 1) = RazborStroki(строчка)
  With Range("A1:A5, A7").Font
     .Name = "Times New Roman"
     .Bond = True
     .Size = 14
  End With
End Sub

'возвращает TRUE, если аргумент является символом-разделителем слов
'(пробел, кавычки, точка, запятая и тд)
Public Function IsDelimeter(simbol As String) As Boolean
If simbol = " " Or simbol = """" Or simbol = "'" Or simbol = "." Or simbol = "," Then IOsDelimeter = True Else IsDelimeter = False
End Function

'возвращает True, если аргумент является цифрой
' 1 2 3 4 5 6 7 8 9 0
Public Function IsChislo(simbol As String) As Boolean
simbol = UCase(simbol)
If simbol = "1" Or simbol = "2" Or simbol = "3" Or simbol = "4" Or simbol = "5" Or simbol = "6" Or simbol = "7" Or simbol = "8" Or simbol = "9" Or simbol = "0" Then IsChislo = True Else IsChislo = False
End Function


'разбираем строки на слова и показываем в некоторых соответствие с заданным критерием
Public Function RazborStroki(s As String) As String
Dim i, p As Integer 'вспомогательные переменные
Dim flag As Boolean 'флаг, при разборе строки он равен True "внутри" слова, иначе False
Dim words As New Collection 'коллекция(список) для хранения выделенных слов
Dim word As Variant 'отдельное слово из коллекции
Dim mess As String 'строка для визуального вывода результата
'смотрим: первый символ строки - разделитель или нет
  If IsDelimeter(Mid(s, 1, 1)) Then
     flag = False
     Else
     flag = True
  End If
'цикл разбора строки на слова
For i = 1 To Len(s)
  If IsDelimeter(Mid(s, i, 1)) = False And flag = False Then
'если очередной символ строки - не разделитель, и мы не внутри слова, то это означает начало нового слова
   p = i
   flag = True
   End If
 If IsDelimeter(Mid(s, i, 1)) = True And flag = True Then
' иначе, т.е. если встречен разделитель и мы "внутри" слова,
' то значит очередное слово закончилось и его надо выделить
' и добавить в список найденных
 words.Add Mid(s, p, i - p)
 flag = False
 End If
Next i
'если по завершению цикла флаг остался true, тогда надо выделить последнее слово
If flag = True Then words.Add Mid(s, p, Len(s) - p + 1)
'печатаем слова, которые начинаются и заканчиваются на гласные
mess = ""
For Each word In words
  If IsChislo(Mid(word, 1, 1)) = True And IsChislo(Mid(word, Len(word)), 1) = True Then mess = mess + word + ""
  Next
  RazborStroki = mess
End Function


не могу найти и, собственно, исправить ошибку...

Дата отправки: 09.12.2008, 17:05
Вопрос задал: Amidala
Всего ответов: 1
Страница онлайн-консультации »


Консультирует PsySex (Профессионал):

Здравствуйте, Amidala!
Я переписал вашу функцию RazborStroki, она получилась намного компактней из-за того что я использовал встроенные функции VBA для определения - является ли символ числом и функции разбивки строки в массив по разделителю. Код в приложении, прокоментирован.

Приложение:

Консультировал: PsySex (Профессионал)
Дата отправки: 10.12.2008, 10:46
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 32970:

Приветствую вас, уважаемые Эксперты.

Продолжение вопросов 32064 и 32222

1. --- У Екселя есть событие Private Sub Workbook_Open

Поставил как сказали - в заголовок макроса встроенной книги personal.xls:

Private Sub Workbook_Open
Text_Code
End Sub

Компилятор этого не понял не стал автоматом запускать, хотя и предупредил об открытии файла с макросами
Мне бы хотелось чтобы Ексел можно было запускать с обработкой макроса из внешнего файла, так как на входе текстовый файл, а не книга (XLS).

2. Думал это будет просто, ан нет.
Мне необходимо чтобы внутри макроса можно было открывать файл используя комбинацию 2 переменных
Напр. Workbooks.OpenText FileName:="exFilePath"\"exFileName", другими словами объединить две текстовых пременных в одну.
Каким образом это можно реализовать?

Спасибо. Eugenius.

Дата отправки: 10.01.2006, 16:36
Вопрос задал: Eugenius
Всего ответов: 4
Страница онлайн-консультации »


Консультирует PornoSlon:

Здравствуйте, Eugenius!
Для обединения 2 переменыых следующий текст
Например Dim str as string
Dim str1 as string
Dim str2 as string
и дальше..
str2 = str1 + str
и все ...Удачи!

Консультировал: PornoSlon
Дата отправки: 10.01.2006, 17:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует AlexanderZh:

Здравствуйте, Eugenius!
Вместо + правильнее использовать &
(дополнение к предыдущему ответу)

Консультировал: AlexanderZh
Дата отправки: 10.01.2006, 23:52
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Николай К:

Здравствуйте, Eugenius!
По второму:

FullName = Path & "/" & FileName

Консультировал: Николай К
Дата отправки: 11.01.2006, 13:47
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Залетин Виталий Викторович:

Здравствуйте, Eugenius!
1. Вышлите мыло на vbman@bigmir.net если ezhevica@mail.ru не Ваше мыло и я таки докажу, что все работает - пришлю пример.
2. Workbooks.OpenText FileName:= trim$(strPath) & "\" & trim$(strFileName)

Консультировал: Залетин Виталий Викторович
Дата отправки: 14.01.2006, 14:05
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное