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

Страницы: 1
Преобразовать строку в массив (VBA)
 
Всем доброго дня!
Прошу уважаемых форумчан помочь советом по следующей ситуации.

[VBA]: обрабатывается построчно текстовый файл большого размера (100+ Мб).
Каждая считанная строка имеет следующий вид (пример):
Код
{{"Василий","Инженер",55000,35},{"Михаил","Юрист",65000,42},{"Светлана","офис-менеджер",35000,27}}

Согласно синтаксису VB (не VBA), подобная запись информации (с использованием вложенных литералов `{` и `}` ) соответствует записи двумерного массива.
Цитата
' https://msdn.microsoft.com/ru-ru/library/wak0wfyt.aspx
...
Dim grid = {{1, 2}, {3, 4}}
...
А синтаксис описания массивов в VBA, к сожалению, иной и фигурные скобки не воспринимаются.

Требуется: присвоить содержимое вышеуказанной строки переменной, являющей двумерным массивом для последующей обработки строк и столбцов. К примеру - суммированию в цикле зарплат сотрудников, чей возраст менее 40 лет.

Проблема: описание массивов в VBA не воспринимает фигурные скобки. Можно было бы через RegExp привести строку к виду
Код
Array(Array("Василий","Инженер",55000,35),Array("Михаил","Юрист",65000,42),Array("Светлана","Офис-менеджер",35000,27))
и применить (бы) evaluate, но Evaluate в VBA обрабатывает только арифметические выражения...

Я пытался воспользоваться другим редактором:
Код
Dim d As New MSScriptControl.ScriptControl
d.Language = "VBScript"...
но он так же отличается от VB и не воспринимает синтаксис массива с применением фигурных скобок.

Уважаемые коллеги, подскажите, какие есть идеи или варианты на Ваш взгляд, кроме простого перебора строки и заполнения в цикле двумерного массива для приведения его к виду
Цитата
Василий      Инженер         55000    35
Михаил       Юрист           65000    42
Светлана     Офис-менеджер   35000    27
Скорость работы решения важна, поскольку файл - большого размера.

Заранее благодарю Вас за участие в обсуждении!
Изменено: Alex.Karev - 18.08.2016 10:39:52
Записать значение в ячейку Excel с помощью win api
 
Здравствуйте, уважаемые форумчане!

Считать значение ячейки A1 на текущем листе можно так:
Код
MsgBox ActiveSheet.Cells(1, 1).Value

А можно так:

Код
#If VBA7 Then

Private Declare PtrSafe Sub RtlMoveMemory Lib "kernel32" (Dst As Any, Src As Any, ByVal bytes As Long)
#Else
Private Declare Sub RtlMoveMemory Lib "kernel32" (Dst As Any, Src As Any, ByVal bytes As Long)
#End If
'--------------------------
Sub test()
    Dim b() As Byte

    ReDim b(1 To 4096)
    RtlMoveMemory b(1), ByVal StrPtr(Cells(1, 1)), 4096
    MsgBox b
End Sub

Подскажите пожалуйста, а как можно и можно ли изменить значение этой ячейки с помощью win api?

Заранее благодарю за предложения.
Изменено: Alex.Karev - 17.02.2016 16:56:25
Страницы: 1
Наверх