2017-08-29 13 views
0

当我复制一个单元格时,它包含一个超链接公式,它被插入为公式格式的html链接。只有接收应用程序不是另一个Excel 2010实例/应用程序对象时,它才起作用。
当我将它从原始实例复制到另一个实例时,它仅复制纯文本。excel vba:应用单元格与超链接公式失败时从另一个excel实例复制

我可以编写代码什么把html格式的文本放在剪贴板而不是Excel单元格内容对象

+1

请分享您当前使用的代码。 – Cyril

+0

它不是真正的代码,只是一个公式'= HYPERLINK(E10; C2&“_”&C8&“_”&TEXT(C4;“000”))''。我复制(原始文档)/粘贴(不同的实例)。我玩了一段代码,但迄今没有取得任何成功。 – Stefan

+0

请显示你已经尝试过。我没有看到简单的复制/粘贴Excel文档之间的链接的问题,只要您有适当的超链接。我建议在VBA中创建超链接,这样单元格中的输出只是一个超链接,而不是一个公式。这应该解决问题(例如,范围(“名称”)。formula = application.hyperlink(blah))。 – Cyril

回答

0

周围有什么解决的Excel到Excel拷贝问题的工作,但现在我在主要基于以下职位的任何其它应用

粘贴时,有一个问题,我适合VBA提到那里的代码。现在的问题是,Windows现在将纯文本粘贴到其他应用程序中,但它在Excel中完美无瑕。 我在这篇文章的末尾添加了一些GIF文件以供澄清。

Public Sub CopyCellHyperlinkToClipboard(sLink As String, sDescription As String) 
    Dim objData As Object 
    On Error Resume Next 
    ' this is a late bound MSForms.DataObject 
    Set objData = CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") 

    ' copy current cell formula to clipboard 
    With objData 
     .SetText CreateHTMLString(sLink, sDescription) 
     .PutInClipboard 
    End With 
End Sub 

stackoverflow - How to set HTML to clipboard in C#?
Mike Stall's .NET Debugging Blog - Copying HTML on the clipboard 01:


stackoverflow - Excel VBA code to copy a specific string to clipboard
Byte Comb Copy and Paste in VBA
stackoverflow - How do I copy formatted HTML string into a Clipboard for paste using C#?
Mike Stall's .NET Debugging Blog - Copying HTML on the clipboard
以上导致子程序什么把剪贴板中的格式化HTML链接的链接

Function CreateHTMLString(sLink As String, sDescription As String) 
    Dim sContextStart As String, sContextEnd As String, m_sDescription As String, sHtmlFragment As String, sData As String, sSourceURL As String 

    m_sDescription = "Version:1.0" + Constants.vbCrLf _ 
        + "StartHTML:aaaaaaaaaa" + Constants.vbCrLf _ 
        + "EndHTML:bbbbbbbbbb" + Constants.vbCrLf _ 
        + "StartFragment:cccccccccc" + Constants.vbCrLf _ 
        + "EndFragment:dddddddddd" + Constants.vbCrLf 
    sContextStart = "<HTML><BODY><!--StartFragment -->" 
    'sSourceURL = "" + Constants.vbCrLf 
    sHtmlFragment = "<A HREF=" + Strings.Chr(34) + sLink + Strings.Chr(34) + ">" + sDescription + "</A>" 
    sContextEnd = "<!--EndFragment --></BODY></HTML>" 

    sData = m_sDescription + sContextStart + sHtmlFragment + sContextEnd 
    sData = Replace(sData, "aaaaaaaaaa", PadLeft(10, "0", Len(m_sDescription))) 
    sData = Replace(sData, "bbbbbbbbbb", PadLeft(10, "0", Len(sData))) 
    sData = Replace(sData, "cccccccccc", PadLeft(10, "0", Len(m_sDescription + sContextStart))) 
    sData = Replace(sData, "dddddddddd", PadLeft(10, "0", Len(m_sDescription + sContextStart + sHtmlFragment))) 
    'sData.Dump(); 
    CreateHTMLString = sData 
End Function 

由于填充不通过VBA支持我创建了基于下面的链接这个功能: stackoverflow - Any method equivalent to PadLeft/PadRight?

Function PadLeft(iLength As Integer, cChar As String, sText As String) 
    cChar = Left(cChar, 1) 
    PadLeft = Right(String(iLength, cChar) & sText, iLength) 

End Function 
个 以上导致什么创造实际的HTML字符串函数的链接

从Excel 2010实例插入超链接到另一个超链接,因为您可以看到它只插入超链接的标签: Excel2Excel 在Excel中插入超链接作品完美无缺: Excel2App 因此我写了上面的代码。现在Excel2Excel工作: Excel2Excel by VBA ,但它并不适用于其他应用程序的工作: Excel2App by VBA

0

如果你可以创建通过VBA的链接,它应该规避大约需要一个链接复制到剪贴板中的问题。

你会采取你的表要创建链接,并使用类似的循环:

With Sheets(A) 
    .Hyperlinks.Add Anchor:=.Cells(1,2), Address:=.Cells(1,1), TextToDisplay:="Example" 
End With 

这是一个相当普遍的建议,并且应该让你看,例如,.Cells(I,1 )和.Cells(i,2)的具体例子。

从)一个工作簿到另一个,使用超链接,而不是说一个细胞=超链接(复制,将有望解决这个问题。

相关问题