Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 След.
VBA: обратиться к элементам объекта
 
Добрый день
Прошу прощения за возможно глупый вопрос, но ничего не смог найти
Подскажите как можно обратиться к значениям типа jsonObj.body.items.0.id?
Изменено: jfd - 20.01.2023 13:22:26
VBA: определить адрес измененной ячейки
 
Добрый день

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

Можно через оффсет от активной ячейки, но кажется это коряво и не всегда будет работать.

Например в таком макросе.

Код
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("J:J")) Is Nothing Then
Call Mymacro
End If
End Sub



vba: дождаться завершения выполнения Shell
 
Добрый день,
подскажите, можно ли как-то дождаться завершения процесса копирования файла, а потом продолжить выполнение скрипта. Через паузу по времени к сожалению не гарантированно.Копирование реализовано так

Код
Shell "cmd /c copy """ & updFilePath & updFileArr(i) & """, """ & fnSyn & """"
    Application.Wait Now + TimeSerial(0, 0, 10)


Заранее благодарен
переменная в параметре SQL запроса
 
Добрый вечер, подскажите пожалуйста что не так
Вкратце что делаю: если в БД есть запись с значением поля sn = 111111, то меняю значение другого поля
делаю так

Код
pRSet.Open "Select `id` from dog_tb WHERE `sn`=" & obArr(i_db, 3), pConn, adOpenStatic, adLockOptimistic
rrrr = pRSet.Fields.Item(0).Value
    If pRSet.EOF = False Then
        'изменение поля записи
        pRSet.Close
        pRSet.Open "Select * from dog_tb", pConn, adOpenStatic, adLockOptimistic
        pRSet.MoveFirst
        pRSet.Find "id=" & rrrr & Chr(34), 0, adSearchForward
        pRSet("log_time") = Now
        pRSet.Update
    End If

pRSet.Find "id=" & rrrr & Chr(34), 0, adSearchForward - не работает

если для проверки pRSet.Find "id=1" , 0, adSearchForward - т.е. подставить руками значение переменной, то работает
Что не правильно делаю?

Заранее спасибо
Изменено: jfd - 25.04.2018 20:16:54
VBA: работа с COM-портом из Excel 64-bit, NETComm.ocx аналог MSComm32.ocx
 
Доброго всем времени суток,
хотел бы снова полохматить тему COM-порта и 64-битного  экселя.
Встроенная библиотека mscomm32.ocx в 64 не работает, как все знают.
Есть некий ее аналог NETComm.ocx (http://www.hardandsoftware.net/NETCommOCX.htm) для 64битных систем.
Может кто с ней сталкивался и работал?
VBA: like not - есть ли чтото подобное?
 
Добрый день
не хватает конструкции Like Not "балблабла"
как уважаемые профи выходят из такой ситуации?
Спасибо заранее
VBA: номер последней строки диапазона
 
Добрый день, подскажите как можно получить номер строки соответствующей последнему значению
диапазона, если это возможно?
Имеем диапазон ячеек "A3:A10"
Set ColT = Range("A3:A10")
Дальше значение ColT передается в функцию и в ней надо получить номер последней строки, в приведенном примере это будет 10
Спасибо
VBA: метод Select Case, несколько условий
 
Добрый день, подскажите, плиз, я что-то не правильно делаю или так не возможно в принципе?
Код
Select Case t7Arr(t, 4)
    Case Is = "R" And bArr(f,4) <> "ОТС" <------------- ошибка Type Mismatch

VBA: редактирование текстового файла
 
Добрый день, подскажите пожалуйста такой момент.
У меня есть текстовый файл, в нем XML я через
Input #1, s
получаю переменную содержащую часть файла, делаю некоторые действия (нахожу фрагмент, заменяю его на другой) и мне надо вставить строку содержащуюся в этой переменной в тоже место откуда она была считана, то есть заменить
Код
Sub text()

nomArr = Range("A3:E125") ' таблица соответсвия
Open "пульты.ned" For Input As #1

    Dim s As String
    While Not EOF(1)
        Input #1, s
        If Mid(Trim(Replace(s, " ", "")), 2, 13) = Chr(34) & "ownerName" & Chr(34) & ":" & Chr(34) Then
            iDn = Mid(Trim(Replace(s, " ", "")), 15, Len(Trim(Replace(s, " ", ""))) - 15)
            For i = 1 To UBound(nomArr)
                If iDn = CStr(nomArr(i, 3)) And nomArr(i, 4) <> "" Then
                    iNomer = nomArr(i, 4)
                    s = Replace(s, iDn, iNomer)
                    Print #1, s ' <---------------------------------- вот тут возникает затык
                End If
            Next i
            
        End If
    Wend
  Close #1
End Sub

Пример файла
Код
{
    "configs": [
        {
            "config_list": [
                {
                    "devices": [
                        {
                            "active": true,
                            "group": 1,
                            "id": 39173,
                            "ownerName": "39173",
                            "scriptAction": 0,
                            "system": 2,
                            "workMode": 0
                        },
                        {
                            "active": true,
                            "group": 1,
                            "id": 192260,
                            "ownerName": "192260",
                            "scriptAction": 0,
                            "system": 2,
                            "workMode": 0
                        },
Расположить окна Immediate и Locals
 
Добрый день, хелп ми плиз
не могу вернуть окна в привычное положение. Были под окном кода окна Immediate и Locals, вытаскивал по нужде на второй монитор, а обратно никак.
Хочу как на скриншоте, только под окном с кодом
 
VBA: отчет об отправке через CDO
 
Добрый день
Можно каким либо образом получать отчет о том, что письмо отправленное через CDO попало в почтовый сервер и ушло с почтового сервера?
Факт обращения к CDO получаем при помощи следующего кода
Код
If Err.Number = -2147220973 Then ermsg = "Отсутствует связь с интернетом"
        If Err.Number = -2147220975 Then ermsg = "SMTP сервер ответил отказом"
        If Err.Number = 0 Then ermsg = "Письмо отправлено"
    Send_Mail = Err = 0
но сложилась такая ситуация что первые ~ 60 сообщений SendMail = True, а последующие SendMail = False (код ошибки  -2147220977).
При этом по логам почтового сервера видно что все сообщения попали в очередь и в последствии отправились.
Что означает код ошибки тоже не нашел. Где его можно посмотреть?
Заранее благодарен за ответы
VBA: список открытых COM-портов, получить список отрытых портов и название устройства
 
Доброй ночи,
можно ли получить получить список отрытых СОМ портов и название устройства в нем?
Например HUAWEI Mobile Connect - 3G PC UI Interface
Цель: после запуска макроса мониторить СОМ-порты, когда нужное устройство окажется подключенным перейти к дальнейшим действиям
Для работы с портами использую  MSCommLib, с ней есть проблемы (не работает на 64-битном офисе), если подскажите альтернативу, буду признателен
Заранее благодарен за ответы
Изменено: jfd - 10.02.2016 23:27:14
VBA: перейти к метке, по нажатию CommandButton
 
Подскажите плиз, как по событию CommandButton1_Click() перейти к метке в коде?
Изменено: jfd - 25.01.2016 13:58:33
VBA: преобразование типов, Type mismatch
 
Добрый день, подскажите пожалуйста почему когда делаем преобразование типа из String в Double
если значение строковой переменной = "1345" все ОК
если значение строковой переменной = "254.25" - Type mismatch
Спасибо
VBA: MSXML2.ServerXMLHTTP, проблемы с прокси
 
Добрый день,
может кто сталкивался, есть ли какието нюансы при работе через прокси?
без прокси все работает. с прокси - нет. Пишет ошибку 407 Proxy Authentication Required
Логин указывал и с доменом и без.
параметры
.setProxy 2, proxy
.setProxyCredentials iLog, pwd

прокси SQUID
Изменено: jfd - 22.01.2016 17:25:14
VBA:непонятное поведение Copy и PasteSpecial
 
Добрый день,
объясните, пожалуйста, почему так  и как этого избежать
При вставке в появляются те значения которые были добавлены после того как строка была скопирована
Код
Sub test()
Rows(1).Copy
Cells(1, 5) = 444
Range("2:2").PasteSpecial
End Sub

VBA: выгрузить элемент массива в строку, без цикла
 
Доброй ночи (утра)
Помогите с таким вопросом, плиз
Есть массив двухмерный Arr(1 to 5, 1 to 3)
Можно каким либо способом выгрузить всю горизонталь элемента 1 в строку на листе начиная с (например) ячейки А4
Т.е. A4 = Arr(1,1); B4=Arr(1,2); C4 = Arr(1,3)
Без перебора каждого значения элемента
Изменено: jfd - 14.01.2016 01:29:16
VBA: где смотреть значения глобальных переменных, есть ли аналог Locals для глобаных переменных
 
Добрый день, подскажите пожалуйста,
где смотреть значения глобальных переменных? В Locals их нет, что наверное логично.
Спасибо.
VBA: определить тип содержимого ячейки
 
Добрый день, такой вопрос есть
в ячейке формат которой Дата может содержаться как дата формата дд.мм.гггг так и текст. Можно как-то определить что в ячейке дата,  без использования текстовых функций?
Может через преобразование типа в Cdate, если нет ошибки то True(т.е. дата), если ошибка то False (т.е. не дата, а текст)?
Заранее благодарен за помощь
Изменено: jfd - 17.12.2015 16:15:12
mscomm32.ocx, ActiveX component can't create object
 
Добрый день уважаемые
помогите плиз, посоветуйте чтонибудь
проблема - в названии темы
Win 8.1 Prof x 64 Office 2013 x64
библиотеку зарегистрировал успешно и в system32 и sysWOW64, regsvr32 запускал из той папки в которой лежал mscomm32.ocx
В References найдена и отмечена галкой.  Location - SysWOW64
И так пробовал CreateObject("MSCommLib.MSComm")
И не работает.

ПС. Понятно что это не самоцель. Надо получить доступ к СОМ порту, но  с inpout.dll даже зарегистрировать не получилось
VBA: вопрос по CDO, значение поля cdoMessage.From
 
Добрый день!
Не подскажет ли многоуважаемый all, такую вещь
Всегда ли надо чтобы cdoMessage.From был равен sendusername & почтовый сервер?
Попробовал указать произвольный .From - не прокатило.
Есть возможность с произвольным слать или смириться?

ПС. это не для анонимности, а для того чтобы отвечали именно тому кто стоит в поле From

Заранее благодарен
VBA: сортировка столбцов по значению первой ячейки
 
Добрый день!
Направьте плиз по правильному пути
Есть на Листе 3 столбца с данными. В заголовке каждого столбца Дата. Надо расположить столбцы в порядке возрастания дат.
Заранее благодарен

Есть
10.2015     09.2015     11.2015  
453542345 5473287   828  
45245245     8287      
45245245     8272287     82  
Надо
09.2015                        10.2015                    11.2015                  
5473287               453542345             828            
8287             45245245                              
8272287               45245245             82              
Изменено: jfd - 09.12.2015 14:17:51
VBA: присвоить имя массиву
 
Добрый день, возникла необходимость присваивать имя массивам в цикле
Перебирая файлы в папке считываю каждый файл в отдельный массив, название которого создается при считывании файла
Примерно вот так
Код
            monthBill = Format(CDate(InputBox("Введите месяц и год "Например 02.2015", "Месяц акта")), "mm.yyyy")
            monthBillArr = CStr(monthBill)
            arrName = monthBillArr & "ar"
            Dim arrName()
            ArrVSize = LastRow - FirstRow
            ReDim arrName(1 To 4, 1 To ArrVSize)
Но не прокатывает к сожалению. Может есть способ присваивать имена в цикле?
Спасибо
VBA: получить имя листа кликом мыши на ярлыке
 
Добрый день!
Подскажите, а можно получить имя листа кликнув мышью на ярлыке с использованием какого либо метода типа Application.Inputbox?
Про заставить юзера активировать лист, а потом взять имя активного листа я подумал, так скорее всего и сделаю, но вдруг...
VBA: нахождение частичного совпадения
 
Добрый день. Подскажите пожалуйста алгоритм решения.
есть cel = 1.1, но может быть равна и 1.11 и 1.111
есть листы книги с именами 1.1 ХХХХ, 1.11 ХХХХХ и т.д.
как в случае cel = 1.1 мне найти лист 1.1 ХХХХ , а не оба листа. сравнивать планирую перебором имен листов
VBA: Address непонятное значение
 
Добрый день, не могу до конца правильно сформулировать вопрос, надеюсь на развитую телепатию у старожил
Метод переменная.Address выдает, иногда, ответ как "$N$XXXX:$N$XXXX", это случается при переходе на новый лист в процессе перебора листов. Все остальное время как и положено $N$XXXX
Почему и как от этого избавиться?
Заранее спасибо за ответы
Файл привести полностью не могу. Кусок кода в процессе которого получаем переменную
Код
For Each ws In Worksheets

    If Left(ws.Name, 2) = "1." Then 
        ColNum = 11
        wsLastRow = ws.Cells(Rows.Count, ColNum).End(xlUp).Row
        ReDim tarArr(1 To wsLastRow - 2, 1 To 3)
        i = 0
        For Each cel In ws.Range(ws.Cells(3, 11), ws.Cells(wsLastRow, 11))
                i = i + 1
                tarArr(i, 1) = Trim(cel.Offset(0, -1).Value) & Trim(cel.Value) _
                & Trim(cel.Offset(0, -2).Value) & Trim(cel.Offset(0, 1).Value)
                tarArr(i, 2) = cel.Row
                tarArr(i, 3) = Trim(cel.Offset(0, -1).Value) & Trim(cel.Value)
            
        Next
        For j = 1 To UBound(tarArr)
        
            With Range(Sheets("Выгрузка").Cells(3, 11), Sheets("Выгрузка").Cells(bazaLastRow, 7))
                Set c = .Find(tarArr(j, 3), LookIn:=xlValues)
                'c = Trim(c)
                If Not c Is Nothing Then
                firstAddress = c.Address
VBA: перебрать все значения в диапазоне без For Each
 
Добрый день, посоветуйте пожалуйста, как это сделать красиво
Сабжевый цикл не работает потому что в некоторых случаях ячейка перезаписывается и цикл зацикливается
VBA: скопировать и вставить строку
 
Помогите плиз не могу догнать как сделать
есть переменная "с", копируем строку в которой она содержится c.EntireRow.Copy
есть вторая переменная "cel", как в строку с этой переменной вставить скопированное?
при этом происходит перезапись значений в этой строке
VBA: поиск всех значений на всех листах в заданном диапазоне
 
Добрый день, помогите пожалуйста расширить конструкцию на все листы.
Надо перебрать все ячейки в диапазоне и найти все совпадения в диапазоне текущего листа и диапазонов остальных листов. Диапазоны на листах по количеству строк не совпадают. Совпадает только номер столбца
Код
For Each ws In Worksheets
    If Left(ws.Name, 2) = "1." Then 
        
        firstCel = Cells(3, 11)       'определяем первую и последнюю строку диапазона
        firstCelCol = Range(firstCel).Column
        LastRow = Cells(Rows.Count, firstCelCol).End(xlUp).Row
        For Each cel In Range(firstCel, LastRow)
                With Range(firstCel, LastRow)
                Set c = .Find(cel, LookIn:=xlValues)
                If Not c Is Nothing Then
                firstAddress = c.Address
                    Do
                        c.Offset(0, 19) = "Повторяется на "  'имя листа ' адрес ячейки
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> firstAddress
                End If
                End With
        Next
    
    End If
VBA: действия над Word из Excel
 
Хелп ми плиз.Я понимаю что тема избитая, но не могу разобраться
Вот кусок работающего Вордового  макроса
Код
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.End).Copy
Selection.EndKey Unit:=wdStory
Selection.InsertBreak Type:=wdPageBreak
Selection.Paste
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.Start).Select
Selection.InsertBreak Type:=wdPageBreak

With ActiveDocument.Styles(wdStyleNormal).Font
        If .NameFarEast = .NameAscii Then
            .NameAscii = ""
        End If
        .NameFarEast = ""
    End With
    With ActiveDocument.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientLandscape
        .TopMargin = CentimetersToPoints(1.27)
        .BottomMargin = CentimetersToPoints(1)
        .LeftMargin = CentimetersToPoints(2.4)
        .RightMargin = CentimetersToPoints(0.95)

В экселе есть объекты
Код
Set objWordBill = CreateObject("Word.Application")
            objWordBill.Visible = True
            directory = fnShellBrowseForFolderVB1 & "\"
            objWordBill.Documents.Open (directory & fileName)
Set aDoc = objWordBill.ActiveDocument
но при попытки замены ActiveDocument на aDoc не работает. И ругается на CentimetersToPoints еще до запуска макроса

ПС. Ранее связывание решило проблему с CentimetersToPoint. И замена
ActiveDocument.Range(Start:=ActiveDocument.Range.Start, End:=ActiveDocument.Range.End).Copy
на
aDoc.Range(Start:=aDoc.Range.Start, End:=aDoc.Range.End).Copy работает
но замена Selection на aDoc не работает
Изменено: jfd - 14.08.2015 14:54:34
Страницы: 1 2 3 След.
Наверх