excel - 如何在 ListObject 中显示 guid
问题描述
我试图在ListObject
. SQL 语句选择的数据位于 MS-Access 表中,并包含数据类型为 的列guid
。
ListObject 对象是这样创建的
set listObj = activeSheet.listObjects.add( _
sourceType := xlSrcExternal , _
source := array(source) , _
destination := destCell)
source
是一个值为 的字符串OLEDB;provider=Microsoft.ACE.OLEDB.12.0;data source=p:\ath\do\db.accdb
。
我像这样执行选择语句
with listObj ' {
.displayName = "foo"
with .queryTable ' {
.commandType = xlCmdSql
.commandText = array("select * from tab")
.refreshOnFileOpen = false
.backgroundQuery = true
.refreshStyle = xlInsertDeleteCells
.saveData = true
.refreshPeriod = 0
.preserveColumnInfo = true
.refresh backgroundQuery := false
end with ' }
end with ' }
这将显示查询的结果集,但没有包含 guid 的列。
那么,有没有办法添加 guid 列?
解决方案
如果您将自己限制在 ListObjects 和 OLEDB 上,我不这么认为。
GUID 在 Access 中表示为二进制数据。Excel listobjects 无法显示。
要将 GUID 转换为字符串,通常使用StringFromGUID
Access 中的函数,但 OLEDB 不支持该函数。
但是,PowerQuery 和 Microsoft Query 本身就可以理解 GUID,并且会正确显示它们。不幸的是,通过 VBA 使用 PowerQuery 会弹出令人讨厌的警告,因此 Microsoft Query 往往是最佳选择。
或者,您可以先在 Access 中执行 a SELECT StringFromGUID(MyGuid) As MyGUIDString, * INTO TempTable FROM tab
(通过自动化 Access 应用程序),然后在 Excel 中显示。
推荐阅读
- python - DRF 不更新而是在模型序列化器中创建新实例
- python - 快速连续重复调用芹菜任务的执行时间会增加
- android - 如何使用 React Native 在 Mapview 中显示当前位置?
- java - 哈希映射
数据结构,但值是添加而不是替换 - javascript - results.length 没有为 MySQL 查询提供正确的输出?
- android - 如何从作为 AndroidEntryPoint 的 ViewPager 片段中获取父片段?
- javascript - 我可以在 Bootstrap 范围滑块中添加两个值吗
- kotlin - org.koin.core.error.InstanceCreationException:无法为 [Factory:'com.pokemonsearch.presentation.search.SearchViewModel'] 创建实例
- javascript - 对数组中的数据进行分组,求和并添加子节点
- java - 每年每个季度的第一个星期五的下星期日的 Cron 作业