Перебирайте строки и создавайте объекты в системе управления файлами - PullRequest
0 голосов
/ 11 октября 2019

Я пытался создать цикл для добавления участников в нашу систему управления файлами. Это работает и добавляет членов, однако есть проблема с «Для каждого чел», я думаю. Похоже, мое решение берет каждую ячейку в диапазоне и создает новый объект. Таким образом, в диапазоне A3:C5 есть 9 ячеек, и я получаю 9 объектов.

Мое намерение - создать цикл, который будет создавать 3 объекта с кодом. Таким образом, это должно выглядеть так:

  1. Взять имя из A3 и затем собрать свойства для него из смещений (Имя PD или Название B3 и Адрес PD C3).
  2. Возьмите имя из A4, а затем соберите свойства для него из смещений (имя PD или заголовок B4 и адрес PD C4).
  3. Взять имя из A5 и затем собрать свойства для него из смещений (Имя PD или Название B5 и Адрес PD C5).

Вот мой упрощенный код:

'set range
    Dim myrng: Set myrng = ThisWorkbook.Sheets("Sheet").Range("A3:C5")

Dim cel
'loop through each cell in range
For Each cel In myrng

'collect dearch memebers
Set oSearchCondition = CreateObject("MFilesAPI.SearchCondition")
oExp.DataPropertyValuePropertyDef = 0
oTV.SetValue MFDatatypetext, cel.Offset(rowOffset:=0, columnOffset:=1).Value
oSearchCondition.Set oExp, MFConditionTypeEqual, oTV
oSearchConditions.Add -1, oSearchCondition

'Execute search

'Collect property memebers

    ' PD Name Or title.
    oPVNew.PropertyDef = 0
    oPVNew.TypedValue.SetValue MFDatatypetext, cel.Offset(rowOffset:=0, columnOffset:=1).Value
    oPVsNew.Add -1, oPVNew

    ' PD Address
    oPVNew.PropertyDef = 1028
    oPVNew.TypedValue.SetValue MFDatatypetext, cel.Offset(rowOffset:=0, columnOffset:=2).Value
    oPVsNew.Add -1, oPVNew

' Create a new document collection if it doesn't already exist
If oObjectSearchResults.Count = 0 Then

    ' Create New one
    Set oDocumentCollectionOVAP = oVault.ObjectOperations.CreateNewObjectEx(305, oPVsNew)

Else

End If

Next

1 Ответ

0 голосов
/ 11 октября 2019

Цикл только по первому столбцу myrng.

For each cel in myrng.Columns(1).Cells

В противном случае вы проходите по каждой ячейке в myrng, длина которого по определению составляет 3 столбца.

Кроме того, вы можете изменить определение myrng и оставить цикл for таким же.

Dim myrng: Set myrng = ThisWorkbook.Sheets("Sheet").Range("A3:A5")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...