ActiveSheet.Paste 第二次粘贴更新有问题?

ActiveSheet.Paste problem with updating for second Paste?

我有一些 VBA 代码似乎可以工作 - 有点

它需要一些 HTML 代码并使用剪切和粘贴来显示实际的 HTML 而不仅仅是文本 - 这来自我做过一次的宏记录,现在想扩展到更多 HTML links

代码确实有效——除了一个小问题

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("A1").Select 'Start in the first cell
    
    ActiveCell.Formula = "<table cellspacing='1' cellpadding='0' bgcolor='#FFFFFF'><tr bgcolor='#FFFFFF'><td><br><br><table cellspacing='0' cellpadding='0'><tr><td><a href='/cmn/chrt/chrt_wrap.php?period=4&epic=ARS' target='window'><img border='0' src='http://uk.advfn.com/p.php?pid=staticchart&s=ARS&p=4&t=46' width='335' height='232' alt='6 Month chart.'></a></td></tr></table></td></tr></table>"
    
    Range("B2").Select 'move to B2 just so the graph is not squashed in the corner of the worksheet 
    
    ActiveCell.PasteSpecial 'paste the HTML Code
    
    Range("A1").Select 'select the cell with the code in
    
    ActiveCell.Value = "" 'and remove the code - so it looks better
    
    ActiveCell.Formula = "<table cellspacing='1' cellpadding='0' bgcolor='#FFFFFF'><tr bgcolor='#FFFFFF'><td><br><br><table cellspacing='0' cellpadding='0'><tr><td><a href='/cmn/chrt/chrt_wrap.php?period=4&epic=EML' target='window'><img border='0' src='http://uk.advfn.com/p.php?pid=staticchart&s=EML&p=4&t=46' width='335' height='232' alt='6 Month chart.'></a></td></tr></table></td></tr></table>" 'get the HTML Graph 2 lines
     
    Range("H2").Select 'move to Cell H2 - so the spacing on the sheet looks good for the graph size
    
    ActiveSheet.Paste ' paste HTML2 code
    
    Range("A1").Select ' tidy up
    
    ActiveCell.Value = ""
    
End Sub

所以我的意图是

  1. 创建 activecell.formula
  2. Write/paste出来
  3. 通过删除代码整理单元格
  4. 创建 HTML 代码 2
  5. write/paste出码2
  6. 整理

所以我在页面上得到的图表没有可见的 HTML 代码背景行。

似乎第一个粘贴工作正常

但即使我正确地更改了 activecell.formula - 我已经看到如果我使用 msgbox 将 activecell.formula 显示到屏幕上....当 activesheet.paste 发生时对于 paste 2 它总是仍然有 Paste1 的代码。 (HTML 代码 1)

所以我让两个 HTML link 工作 - 但它们都在 Paste1 上(因此显示 ARS link 两次)没有将 ARS 显示为 Paste1 和 EML作为 paste2 ?

我假设即使将 activecell.formula 设置为写入 HTML 代码 - 第二次粘贴时粘贴中的某些内容不会被覆盖 ???

提前致谢

我尝试了这段代码,有趣的是 H2 有一个超链接,但它完全不可见,我无法使其可见。

但请尝试以下操作;只需将 H2 更改为您需要的第二个地址

Sub HTML()
With Sheets(1)
.Hyperlinks.Add Range("B2"), Address:="http://uk.advfn.com/p.php?pid=staticchart&s=ARS&p=4&t=46"
.Hyperlinks.Add Range("H2"), Address:="http://uk.advfn.com/p.php?pid=staticchart&s=ARS&p=4&t=46"
End With
End Sub

我想我发现了问题 - 似乎是 Office 剪贴板和系统剪贴板之间的细微差别 - 所以当我手动使用 CNTL-C 和 CNTL-V 时,我猜它进入了系统剪贴板......但在VBA 它进入办公室剪贴板 ???

这就是为什么它似乎可以手动工作,但在 VBA 中却不行...所以我稍微更改了代码以针对特定移动,这似乎现在 100% 的时间都有效...

子宏 1()

将 DataObj 调暗为 MSForms.DataObject 设置 DataObj = 新 MSForms.DataObject

Application.DisplayAlerts = False

Sheets("Graphs").Delete

Sheets.Add(After:=Sheets(Sheets.Count)).Name = "Graphs"

Sheets("Graphs").Activate

Range("A1").Select

ActiveCell.FormulaR1C1 = _
    "<table cellspacing='1' cellpadding='0' bgcolor='#FFFFFF'><tr bgcolor='#FFFFFF'><td><br><br><table cellspacing='0' cellpadding='0'><tr><td><a href='/cmn/chrt/chrt_wrap.php?period=4&epic=ARS' target='window'><img border='0'src='http://uk.advfn.com/p.php?pid=staticchart&s=ARS&p=4&t=46' width='335' height='232' alt='6 Month chart.'></a></td></tr></table></td></tr></table>"

Worksheets("Graphs").Range("A1").Copy

DataObj.SetText ActiveCell.FormulaR1C1

DataObj.PutInClipboard

Range("B2").Select

ActiveSheet.Paste

Application.CutCopyMode = False
   
Range("A1").Select

ActiveCell.Value = ""
       
Range("A1").Select

ActiveCell.FormulaR1C1 = _
    "<table cellspacing='1' cellpadding='0' bgcolor='#FFFFFF'><tr bgcolor='#FFFFFF'><td><br><br><table cellspacing='0' cellpadding='0'><tr><td><a href='/cmn/chrt/chrt_wrap.php?period=4&epic=EML' target='window'><img border='0'src='http://uk.advfn.com/p.php?pid=staticchart&s=EML&p=4&t=46' width='335' height='232' alt='6 Month chart.'></a></td></tr></table></td></tr></table>"

Worksheets("Graphs").Range("A1").Copy

DataObj.SetText ActiveCell.FormulaR1C1

DataObj.PutInClipboard

Range("H2").Select

ActiveSheet.Paste

Application.CutCopyMode = False
                      
Range("A1").Select

ActiveCell.Value = ""

结束子

通过继续返回 A1 并创建/复制/删除 HTML 代码 - 然后在最后 sheet 只是充满了图表,没有虚假文本等....

感谢您对原始请求的所有贡献....