Как установить значение данных формы - PullRequest
0 голосов
/ 20 декабря 2018

Visio VBA Macro: я хочу установить значение данных формы после того, как форма была перетащена на страницу программой.Я создал шестнадцатеричную форму с 5 определенными строками формы данных.

Я пытался искать ответы, но не нашел четких инструкций, как это сделать

   Dim strConnection As String
Dim strCommand As String
Dim strOfficePath As String
Dim cellString As String
Dim vsoDataRecordset As Visio.DataRecordset
Dim vsoCell As Visio.Cell

strOfficePath = Visio.Application.Path

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
                   & "User ID=Admin;" _
                   & "Data Source=svs2.XLSX;" _
                   & "Mode=Read;" _
                   & "Extended Properties=""HDR=YES;IMEX=1;MaxScanRows=0;Excel 12.0;"";" _
                   & "Jet OLEDB:Engine Type=34;"

strCommand = "SELECT * FROM [BaseTemplate$]"

Set vsoDataRecordset = ActiveDocument.DataRecordsets.Add(strConnection, strCommand, 0, "Data")

MsgBox "Connected Up:" & vsoDataRecordset.DataColumns(1)

'Get the row IDs of all the rows in the data recordset
lngRowIDs = vsoDataRecordset.GetDataRowIDs("")


'Iterate through all the records in the data recordset.
For lngRow = LBound(lngRowIDs) + 1 To UBound(lngRowIDs) + 1

    varRowData = vsoDataRecordset.GetRowData(lngRow)
    'varRowData = vsoDataReco


    'Drop Shape onto page
    Set shpObject = pagThisPage.Drop(Application.Documents("microservices V2.VSS").Masters("Microservice"), 0#, 0#)

    'Update Shapes Text
    shpObject.Text = varRowData(0)

    'Get cell that i want to update
    Set vsoCell = shpObject.Cells("Prop.Object")

    'Copy data i want to apply to shape to string
    cellString = varRowData(0)

    vsoCell.Formula = cellString


    'get shape data value to print out
    dt = shpObject.Cells("Prop.Object").ResultStr("")

    MsgBox "---" & dt & ":" & vsoCell.Formula

Next lngRow

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Хорошо, понял, что мне нужно добавить двойные кавычки.

   vsoCell.Formula = """" & cellString & """"
0 голосов
/ 20 декабря 2018

Данные формы хранятся в ShapeSheet.Вы можете получить доступ к ячейке ShapeSheet, чтобы вставить информацию, или получить доступ к ячейке ShapeSheet, чтобы получить информацию.

Set vsoCell = shpObject.Cells("Prop.Object") - это предполагает, что у вас есть соответствующее свойство (строка) с именем "Object" в вашем ShapeSheet,У вас также есть «Пользователь».Клетки для работы.

Теперь вы можете просто использовать свой объект vsoCell для заполнения информацией (например, vsoCell.Formula = "Scratch.X1") - вам может потребоваться двойная кавычка для вставки буквенной строки вместо формулы.

Возьмите общую форму, добавьте некоторые данные формы, а затем откройте форму, чтобы увидеть, как она сохраняется.Это даст вам некоторые идеи о том, какие имена называть и как манипулировать этими данными.ShapeSheet является очень мощной частью модели Visio, и как только вы научитесь управлять ею, вы сможете сделать действительно полезные вещи.

...