copiedVB工作表中表格数据的XML刷新刷新表格的所有实例
感谢您的任何见解,(对于这篇冗长的帖子,我提前表示歉意) 我经常需要根据Salesforce.com组织(云安装)中配置的元数据为客户创建配置工作簿。客户希望此工作簿是Excel文件 Salesforce.com元数据API可用于为组织中的每个Salesforce.com对象创建方便的基于xml的“.object”文件,其中包含需要在Excel中结束的必要元数据 我已经创建了一个Excel工作簿,其中包含一个工作表,作为存储给定.object文件元数据的“模板” 我在这个工作表中创建了3个单独的表,用于存储对象的自定义字段、记录类型和验证元数据 我创建了一个.XSD文件,用给定的.object文件中的元数据填充此工作表中的所有三个表 我希望VB宏使用此工作表、表和.XSD文件循环浏览执行以下任务的.object文件列表:copiedVB工作表中表格数据的XML刷新刷新表格的所有实例,xml,excel,salesforce,metadata,vba,Xml,Excel,Salesforce,Metadata,Vba,感谢您的任何见解,(对于这篇冗长的帖子,我提前表示歉意) 我经常需要根据Salesforce.com组织(云安装)中配置的元数据为客户创建配置工作簿。客户希望此工作簿是Excel文件 Salesforce.com元数据API可用于为组织中的每个Salesforce.com对象创建方便的基于xml的“.object”文件,其中包含需要在Excel中结束的必要元数据 我已经创建了一个Excel工作簿,其中包含一个工作表,作为存储给定.object文件元数据的“模板” 我在这个工作表中创建了3个单独的
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
XmlMaps是一种工作簿范围的资源,我怀疑当您打开一个新的对象文件,但给它与同一工作簿中的现有XmlMap相同的schema和rootname时,它会认为您正在尝试更新以前的/现有的映射,而不是创建和添加一个新的映射 我认为您需要先将模板表复制到新工作簿中,然后在新工作簿中创建并导入新的XmlMap
或者,尝试进行以下更改:
Sub newObject(fileName As String)
On Error Goto MyERR
' ... '
'Add a named XmlMap to the collection'
Set myMap = ActiveWorkbook.XmlMaps.Add(folderPath & schemaPath)
Call ImportXmlFromFile(myMap, folderPath, fileName)
Exit Sub
MyErr:
MsgBox "Error #" & Err.Number & ": " & Err.Description, vbOKOnly
End Sub
Sub ImportXmlFromFile(myMap As XmlMap, ByVal myFolder As String, myFile As String)
myMap.Import myFolder & myFile
End Sub
很抱歉,我的有序列表显示为代码,但在我控制它之前,它不会发布我的问题。您说“我可以复制模板工作表并重命名它,但是当我为新工作表运行导入XML时,它会覆盖表的每个实例(所有工作表)中的数据。”此代码中有一个错误。向我们展示它,我们可以告诉你如何修复它。@rbaryyoung:谢谢你的反馈,我已经添加了代码。我应该说“可能有bug”。现在,我不太确定…@rbaryyoung:我认为ActiveSheet.Copy在某种程度上在结果工作表中包含了相同的表实例或类似的内容。我认为我需要将每张表中的表彼此分离,或者以某种方式从头开始构建一个新表。嗨,再次感谢您的帮助。不幸的是,这是我尝试的第一件事。它成功地将新映射添加到工作簿中,但结果完全相同。我切换到上面发布的原始代码,以便停止删除测试期间创建的所有映射文件。可能值得注意的是,当我的ImportXMLFromFile子运行myMap.Import(myFolder&myFile)时,我收到了一个下标超出范围的错误。当我创建新的XML映射并运行时:Call ImportXMLFromFile(“CustomObject_Map1”、“C:\SFDC ANT Projects\CCE\Production Data for Config Workbook\objects-QA\”、“Account.object”)我收到以下错误:“运行时错误“1004”:未导入任何数据,因为未映射任何元素。使用Range.XPath.SetValue将XML元素映射到工作表上。“此外,当查看右侧边栏上的源窗格时,很明显新映射已创建,但也很明显,架构数据到主工作表上的表的映射都不存在。错误1004是Excel在VBA出现未处理错误时引发的一般错误。添加一些错误处理,并使用带有err.Description的MsgBox查看VBA中的实际错误。很抱歉,我是VB的新手,我不确定如何实现您描述的错误处理。上面的运行时错误是相当具体的,下面引用的文本是错误的一部分吗?还是不够详细?“未导入任何数据,因为未映射任何元素。请使用Range.XPath.SetValue将XML元素映射到工作表上。”