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

Страницы: 1 2 След.
XMLDOM. Есть ли возможность добавить node в виде строки в корень xml
 
Цитата
написал:
Цитата
doober написал:
Есть, хоть немного доки почитать.
Читайте, там все есть
Сперва почитал, потом на форум обратился. Не всегда получается прочесть документацию от корки до корки.
Может кто-нибудь прочёл больше. Буду очень благодарен, если не затруднит поделиться. А за полезный совет, хоть и повторённый, спасибо конечно. Но, думаю, любому читателю было бы интересней посмотреть ответы по существу.
Если по теме, только через LoadXML получилось добавить предварительно собранный нод и без создания объекта через оператор with.
Изменено: Vargen - 24.10.2022 23:07:35
XMLDOM. Есть ли возможность добавить node в виде строки в корень xml
 
Цитата
написал:
Или нужно последовательно собирать нод Row
Спасибо за отклик и совет ;) . Но это понятно. Тут как раз таки последовательно собирается Row, о чём я указал в стартовом сообщении.
Нельзя ли как нибудь-будь без семи первых строк обойтись? То есть аля:
nodRoot.appendChild MagicMethod("<Row><X>2</X><Y>f</Y><Row>")
Изменено: Vargen - 22.10.2022 19:15:58
XMLDOM. Есть ли возможность добавить node в виде строки в корень xml
 
Цитата
написал:
Пытаюсь сделать добавление noda таким образом
Например имеем xml такого вида <Root><Row><X>1</X><Y>f</Y><Row></Root>
Хочу добавить новый Row
Код
    [URL=#]?[/URL]       1  2  3  4  5  6  7  8  9  10  11  12  13            Dim   xmlDoc    As   DOMDocument          Dim   nodRoot   As   IXMLDOMElement          Dim   nodChild   As   IXMLDOMText                   Set   xmlDoc =   New   DOMDocument          xmlDoc.setProperty   "SelectionLanguage"  ,   "XPath"          xmlDoc.async =   False          xmlDoc.Load (  "D:\xmlname.xml"  )                   Set   nodRoot = xmlDoc.getElementsByTagName(  "Root"  ).Item(0)                  Set   nodChild = xmlDoc.createTextNode(  "<Row><X>2</X><Y>r</Y>"  )    nodRoot.appendChild nodChild   
 
Получаю в результате: <Root><Row><X>1</X><Y>f</Y><Row><Row><X>2</X><Y>f</Y><Row></­Root>
Прошу подсказать как можно конвертировать строку в нод для корректного добавления. Есть ли такая возможность?
Или нужно последовательно собирать нод Row, либо через клонирование и изменение?
Получил желаемый результат, добавив дополнительно объёкт DOMDocument. Загрузил туда текст нода Row с помощью LoadXML и добавил элемент через appendChild. Может быть всё-таки есть другой способ?
Изменено: Vargen - 22.10.2022 18:39:23
XMLDOM. Есть ли возможность добавить node в виде строки в корень xml
 
Пытаюсь сделать добавление noda таким образом
Например имеем xml такого вида <Root><Row><X>1</X><Y>f</Y><Row></Root>
Хочу добавить новый Row
Код
    Dim xmlDoc  As DOMDocument
    Dim nodRoot As IXMLDOMElement
    Dim nodChild As IXMLDOMText
    
    Set xmlDoc = New DOMDocument
    xmlDoc.setProperty "SelectionLanguage", "XPath"
    xmlDoc.async = False
    xmlDoc.Load ("D:\xmlname.xml")
    
    Set nodRoot = xmlDoc.getElementsByTagName("Root").Item(0)
   
    Set nodChild = xmlDoc.createTextNode("<Row><X>2</X><Y>r</Y>")
nodRoot.appendChild nodChild

Получаю в результате: <Root><Row><X>1</X><Y>f</Y><Row>&lt;Row&gt;&lt;X&gt;2&lt;/X&gt;&lt;Y&gt;f&lt;/Y&gt;&lt;Row&gt;</Root>
Прошу подсказать как можно конвертировать строку в нод для корректного добавления. Есть ли такая возможность?
Или нужно последовательно собирать нод Row, либо через клонирование и изменение?
Как открыть xlsm-файл функцией GetObject с выключением макросов
 
Цитата
[CODE][/CODE]
Понял, благодарю
Изменено: Vargen - 22.10.2022 20:11:39
Как открыть xlsm-файл функцией GetObject с выключением макросов
 
Собственно сабж. Открываю файл и в итоге вижу в дебагере вызов обработчика открытия книги в открываемом файле. Что мне совсем не нужно.
Как-то можно добиться, чтобы макросы не запускались? Получится ли это через GetObject. Использую её, чтобы файл открывался фоново
Изменено: Vargen - 22.10.2022 03:14:46
Можно ли получить индекс строки в Combobox UserForm по строке?
 
Понял что делать. Пишем
Combobox.Value=s
Если строки s в списке комбобокса нет, то следющая строка сообщит нам "-1"
MsgBox Combobox.ListIndex
Изменено: Vargen - 14.05.2018 12:03:10
Можно ли получить индекс строки в Combobox UserForm по строке?
 
Собственно сабж. Задача заключается в том, чтобы выяснить входит ли произвольная строка в Combobox. Это можно бы было проверить, определив индекс этой строки в Combobox. Или такового метода в данном компоненте нет и единственный путь - это поиск строки в цикле?
Изменено: Vargen - 14.05.2018 11:51:03
Использование файлового потока FSO без иннициализации объекта, ведёт к утечке памяти?
 
Цитата
Казанский написал:
Попробовал в цикле с файлом размером 44МБ - утечки памяти не наблюдалось (WinXP SP3).
Как проверяете?
Использование файлового потока FSO без иннициализации объекта, ведёт к утечке памяти?
 
Цитата
Дмитрий Щербаков написал: Если файлы большого размера, то лучше считывать данные построчно, а не сразу весь текст
Это дико долго даже с FSO. Лучше разбивать большой файл и, собирая куски ридоллом, обрабатывать их последовательно. Но... вопрос не в этом.
Изменено: Vargen - 13.04.2018 22:42:55
Использование файлового потока FSO без иннициализации объекта, ведёт к утечке памяти?
 
В определённые моменты работы за компьютером текстовые файлы около 60, 90 и 190 МБ при помощи FSO либо читаются, либо не читаются. А именно, вчера вечером читался только файл около 60 МБ, а сегодня после вкл/выкл компьютера прочитался и файл 190 МБ. Чтение в одном приложении осуществлялось таким образом:
Код
With New FileSystemObject
  txt=.OpenTextFile(sPath).ReadAll
End With

Быть может в этом причина? Тут память используется, но принудительно не освобождается. Или не на то грешу? Ведь в течение дня я наталкивался на ошибки с процедурами, где использовался тот же FSO, и порой прерывал работу макросов с помощью диспетчера задач. Может быть в этом собака зарылась?
Или, например, можно ли делать вот так:
Код
Public Sub ReplaseFileContent(sFPSource$, sFPDestination$)
    With New FileSystemObject
        .CreateTextFile(sFPDestination, True).Write .OpenTextFile(sFPSource, Forreading).ReadAll
    End With
End Sub

Процедура работает нормально, но нет ли тут утечки памяти?

Изменено: Vargen - 12.04.2018 07:19:56
Как открыть файл в текстовом редакторе на определённой строке с помощью VBA?
 
Вот в чём была проблема! Вместо
Код
        Shell Environ("ProgramFiles") & "\notepad++\notepad++.exe " & _
          IIf(iLine = 0, "", "-n" & iLine & " ") & sPath, vbNormalFocus
надо было писать:

Код
        Shell Environ("ProgramFiles") & "\notepad++\notepad++.exe " & _  
IIf(iLine = 0, "", "-n" & iLine & " ") & """" & sPath & """", vbNormalFocus

Если в строке пути есть пробелы, её следует заключать в кавычки.

Изменено: Vargen - 22.11.2017 12:19:28
Как открыть файл в текстовом редакторе на определённой строке с помощью VBA?
 
Работает такой файл .cmd:
echo off
"C:\Program Files (x86)\Notepad++\notepad++.exe" "D:\T\f.txt" -n60
как через vba послать такую же команду?
Как открыть файл в текстовом редакторе на определённой строке с помощью VBA?
 
Казанский, благодарю за помощь, но не вышло
Проверил на таком примере. Notepad++ запустился и им подряд было выдано два сообщения:
1)
---------------------------
Keep non existing file
---------------------------
The file "Путь .xlsm"\Новая" doesn't exist anymore.
Keep this file in editor?
---------------------------
Да   Нет  
---------------------------
2)
---------------------------
Create new file
---------------------------
D:\_Tests\имя doesn't exist. Create it?
---------------------------
Да   Нет  
---------------------------
Изменено: Vargen - 22.11.2017 06:05:10
Как открыть файл в текстовом редакторе на определённой строке с помощью VBA?
 
Казанский, а куда это впихнуть? Написать что-то вроде:

Shell Environ("ProgramFiles") & "\notepad++\notepad++.exe -openSession " & sPath & " -n<60>", vbNormalFocus

Или запускать из vba bat-файл?

Изменено: Vargen - 21.11.2017 14:36:55
Как открыть файл в текстовом редакторе на определённой строке с помощью VBA?
 
Вот написал такую функцию, которая открывает файл в Notepad++.
Код
Function OpenFileInNotepadpp(sPath$) As Boolean
On Error GoTo ErrorHandler
OpenFileInNotepadpp = False
    If fsoFileExists(sPath) Then
        Shell Environ("ProgramFiles") & "\notepad++\notepad++.exe " & sPath, vbNormalFocus
        OpenFileInNotepadpp = True
    Else
        MsgBox "Файл """ & sPath & """ не найден", vbExclamation
    End If
GoTo Ends:
ErrorHandler:
    MsgBox Err.Description & "(" & Err.Number & ");" & _
        vbNewLine & "Источник ошибки: " & Err.Source & _
        vbNewLine & "Процедура: OpenFileInNotepadpp"
  OpenFileInNotepadpp = False
Ends:
End Function
Но этого недостаточно и хотелось бы, чтобы после открытия курсор перемещался на определённую строку. Как этого добиться?
Получение/присвоение значения ячейки по относительным и абсолютным координатам. Что быстрее?
 
Благодарю за ответы.
Казанский, не принципиально куда писать, можно писать во множество разных ячеек указанными путями. Суть в накоплении времени. Ответ вы дали исчерпывающий, благодарю)
Получение/присвоение значения ячейки по относительным и абсолютным координатам. Что быстрее?
 
Дано: координаты ячейки (r,c), и координаты этой ячейки (x,y) относительно другой ячейки, по которой заведомо инициализирован объект R. Будет ли разница в скорости между операциями: Cells(r,c)=10 и R.offset(x,y)=10? Или сии операции в случае их многократного повторения одинаково затратны по времени?
Изменено: Vargen - 20.11.2017 12:53:19
Как избавиться от сообщения Excel
 
Вот собственно сообщение:

выскакивает при закрытии рабочей книги и уничтожении объекта Workbook, которая была открыта при помощи GetObject
Как иннициализировать объект типа Workbook для книги открытой в ДРУГОМ экземепляре Excel?
 
Благодарю!)
Только один вопрос остался по Windows(1)? Почему 1?
Изменено: Vargen - 14.11.2017 13:18:48
Как иннициализировать объект типа Workbook для книги открытой в ДРУГОМ экземепляре Excel?
 
Прошу прощения, что в начале ввёл в заблуждение, сам заблудился. Но вот от новой проблемы не легче. Как же до файлов, с которыми фунция поработала, добраться?
Изменено: Vargen - 14.11.2017 09:43:11
Как иннициализировать объект типа Workbook для книги открытой в ДРУГОМ экземепляре Excel?
 
Вот макрос
Код
Sub Test()

'On Error GoTo ErrorHandler
Dim Wb As Workbook
    Set Wb = GetObject("D:\Book\2.xlsx")

    MsgBox Wb.Worksheets(1).[B1]
     Wb.Worksheets(1).[B1] = 333
    Wb.Close True
    Set Wb = Nothing
End Sub

а ниже прилагаю испорченный файл
Как иннициализировать объект типа Workbook для книги открытой в ДРУГОМ экземепляре Excel?
 
Проверил GetObject повторно. Берёт книгу из другого приложения и работает с ней, не взирая на недоступность самого экземпляра excel - хозяина книги. При предыдущей проверке макрос завис и был поспешно сделан вывод, вынесенный в данную тему. Однако позже, файлы, с которыми эта функция работала, почему-то не открываются!

Это происходит, если закрыть книгу через объект таким образом: Wb.Close True
Изменено: Vargen - 14.11.2017 09:17:00
Как иннициализировать объект типа Workbook для книги открытой в ДРУГОМ экземепляре Excel?
 
Здесь обнаружил полезную функцию. Благодарю за это Игоря).  К сожалению, она не работает в обозначенном в названии темы случае. Данный случай возможен, если открыть книгу в новом экземпляре Excel и тогда она недоступна для функции GetObject. Можно ли сделать сабж или единственный выход - прикрутить в макросе сообщение: "книга открыта в другом приложении, для продолжения работы закройте это приложение". Либо выполнить работу за пользователя и снести все открытые эксели, в том числе хозяина макроса?
Изменено: Vargen - 14.11.2017 07:23:23
Как узнать место ошибки в коде при обработке ошибок через On Error GoTo
 
Благодарю за отет
Цитата
Irregular Expression написал:  Vargen , функцию IsError() и структуру Try...Catch...Finally не рассматриваете?
Пока хватало On Error
Как узнать место ошибки в коде при обработке ошибок через On Error GoTo
 
Без обработки ошибок их источники выделяются. Хотелось бы уже настроить обработчики ошибок в процедурах, но и не лишиться указанной функции, а получать координаты ошибочных участков кода
Выпадающий список с предиктивным вводом
 
Браво!
Реализация технологии предложения вариантов строк при вводе на подобие T9 или поисковых запросов Яндекс при помощи ListBox ActiveX
 
Хотя данное решение полностью снимает мой вопрос. Благодарю ещё раз)
Изменено: Vargen - 20.07.2017 09:07:59
Реализация технологии предложения вариантов строк при вводе на подобие T9 или поисковых запросов Яндекс при помощи ListBox ActiveX
 
Ну да, есть там полезные ответы. Благодарю Вас за ссылку. Но мой вопрос был конкретен, то чего я желаю добиться невозможно?
Реализация технологии предложения вариантов строк при вводе на подобие T9 или поисковых запросов Яндекс при помощи ListBox ActiveX
 
Для обозначенной в теме цели хорошо подходит ListBox, тем более требуется выбор из заведомо установленного списка. Свойству MatchEntry присваивается 1 (fmMatchEntryComplete). После этого, когда ListBox в фокусе, при вводе данных с клавиатуры в окне ListBox выделяется строка, первые символы которой совпадают с вводимой последовательностью. Один недостаток, выделение появляется внизу видимой части списка. Как добиться, чтобы выделение появлялось в вверху видимой в окне ListBox части списка?
Пример во вложении
Страницы: 1 2 След.
Loading...