答案1
我找到了一个解决方法。我没有使用 VBA 代码将选定范围转换为 HTML,而是选择了使用公式和一个 VBA 代码的替代方法。
我做的第一件事是创建一个Sheet5
,然后我从试图复制的表中获取原始 HTML 数据(将行映射Desc!1:16
到列Sheet5!A:K
)并将其拆分,在代码中插入分隔符,以便输入新信息。我取出每个块并将其粘贴到中A2:K2
。然后我获取我手动更改的信息并将其链接到我的书中A4:K4
。(这些是使用我的日志页面上的单元格链接,这些单元格会随着我所做的每个列表而变化。)
在单元格中L2
,我输入了公式
=CONCATENATE(A2,A4,B2,B4,C2," ",C4,D2," ",D4,E2," ",E4,F2," ",F4,
G2," ",G4,H2," ",H4,I2," ",I4,J2," ",J4,K2)
(换行符仅用于演示)。这将获取每个原始 HTML 块和来自我的日志的信息,并将其组合起来以显示完整的 HTML 代码。在C11
我的日志表的单元格中,我将=Sheet5!$L$2
显示主页上的 HTML 数据复制并粘贴该值。
此后,我注意到 Excel 会为所有已加引号的内容添加双引号,为其他区域添加单引号。经过一番搜索,我找到了一些可以复制选定单元格的值的代码,这样我就可以粘贴不带引号的 HTML 代码。这是我为此使用的宏:
Sub CopyCellContents()
Range("C11").Select
'create a reference in the VBE to Microsft Forms 2.0 Lib
Dim objData As New DataObject
Dim strTemp As String
strTemp = ActiveCell.Value
objData.SetText (strTemp)
objData.PutInClipboard
End Sub
我使用了 Pearson Software Consulting(即 Chip Pearson)的 在 VBA 中使用 Windows 剪贴板宏的站点。
我遇到了用户定义数据的问题。为了解决这个问题,我必须退出代码调试器,重新打开包含宏的模块,转到“工具”→“引用”,然后浏览并输入FM20.DLL
“文件名:”。否则我无法在可用的引用中找到“Microsoft Forms 2.0 对象库”。
我将其分配给单元格旁边的一个按钮C11
,现在,当我单击它时,代码会复制到我的剪贴板,不带引号。这并不完全按照我最初计划的方式工作,但结果正是我想要的。希望这对其他人有所帮助。
以下是我所完成的一些屏幕截图:
这是我需要每个列表的代码的地方。
Sheet5
原始数据被分解成单元格。
这是使用这些公式创建的成品。这是我的带有按钮的日志页面。单击后,它会将右侧框中的代码复制到右侧,但不带引号。