一旦我想出如何去做,结果是非常简单。我使用OLE嵌入代替DDE。嵌入将Excel工作簿变成类似于Unix tar文件或Windows zip文件的东西:您有一个文件包含其中的其他文件。
首先,我将XML文本写入一个临时文件,其扩展名为.sqlplan
。其次,我把这个代码:
$object = $ws.OLEObjects().Add(
[System.Type]::missing, # ClassType
$path, # FileName
$false, # Link
$false, # DisplayAsIcon
[System.Type]::missing, # IconFileName
[System.Type]::missing, # IconIndex
[System.Type]::missing, # IconLabel
[System.Type]::missing, # Left
[System.Type]::missing, # Width
[System.Type]::missing, # Height
[System.Type]::missing # Top
)
凡$path
点到临时文件。第三,我删除了临时文件。 (因为“链接”参数是$false
,所以XML文件的副本现在是工作簿的一部分。)
这可能是马丁史密斯在上面提出的评论中提到的,但当时我明白他是称.sqlplan
文件将作为普通文件存储在工作簿之外。另请注意,这可能适用于任何想要嵌入电子表格的文件!
我没有在创建时设置大小和位置的原因是因为在这一点上你不能使其成为正方形。我按照上面的代码这一点,使“链接”填充单元格是在:
$object.ShapeRange.LockAspectRatio = $false
$cell = $range.Cells($cellRow, $cellColumn)
$object.Left = $cell.Left
$object.Width = $cell.Width
$object.Height = $cell.Height
$object.Top = $cell.Top
如果您创建的显示计划作为单独文件以'.sqlplan'扩展然后就超到它应该打开文件自动启动默认应用程序。 –
我一直希望保持Excel工作手册的独立性,但另一方面,您的方法是我知道该怎么做的。 –