感谢您的任何见解,(我提前为长篇道歉)
我经常需要根据 Salesforce.com 组织(云安装)中配置的元数据为客户创建配置工作簿。客户更喜欢此工作簿是 Excel 文件。
Salesforce.com 元数据 API 可用于为组织中的每个 Salesforce.com 对象创建方便的基于 xml 的“.object”文件,其中包含需要在 Excel 中结束的必要元数据。
我已经创建了一个 Excel 工作簿,其中包含一个工作表,该工作表用作我的“模板”,用于存储给定 .object 文件的元数据。
我在此工作表中创建了 3 个单独的表,用于存储对象的自定义字段、记录类型和验证元数据。
我创建了一个 .XSD 文件,该文件使用给定 .object 文件中的元数据填充此工作表中的所有三个表。
我想要一个 VB 宏来使用此工作表、表格和 .XSD 文件来循环执行以下任务的 .object 文件列表:
- 复制现有模板工作表 - 已解决
- 使用 .object 文件名的一部分重命名新副本 - 已解决
- ImportXML 使用 .XSD 文件和现有表(使用当前迭代的 .object 文件元数据填充新工作表表)
- 迭代到下一个 .object 文件并重复,直到每个都有自己的选项卡
注意:我将为每个配置工作簿分别创建此 .object 列表,可能通过扫描目录
主要困难:我可以复制模板工作表并重命名它,但是当我为新工作表运行导入 XML 时,它会覆盖表的每个实例(跨所有工作表)中的数据。
这意味着我最终会得到我需要的所有工作表,但它们都将包含来自执行的最终导入的相同 .object 文件的元数据,而不是适用于每个工作表的 .object 特定元数据。
问题:
- 这个架构适合这个问题吗?
由于我正在复制原始工作表(它具有我想保留的非表格数据和格式)来创建每个附加表格,因此我假设它必须将同一个表格复制到每张表格中。
- 有没有办法将这些复制的表相互分离并仍然维护我的 .XSD 数据绑定?
- 我最好删除表格并在每个工作表中从头开始重新构建一个新表格吗?
- 我在这里吠错树了吗?
Sub newObject(fileName As String)
Dim folderPath As String
Dim myMap As XmlMap
Dim schemaPath As String
folderPath = "C:\...\objects - QA\"
schemaPath = "mySchema.XSD"
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'Name the new copied sheet
ActiveSheet.Name = Left(fileName, Len(fileName) - 7) & ActiveWorkbook.XmlMaps.Count
'Add a named XmlMap to the collection
Set myMap = ActiveWorkbook.XmlMaps.Add(folderPath & schemaPath)
Call ImportXmlFromFile(folderPath & schemaPath, folderPath, fileName)
End Sub
Sub ImportXmlFromFile(myMap As String, myFolder As String, myFile As String)
' buildFieldsListS (myMap)
ThisWorkbook.XmlMaps(myMap).Import (myFolder + myFile)
Exit Sub
MyErr:
MsgBox "Error #" & Err.Number & ": " & Err.Description, vbOKOnly
End Sub