Foxtable(狐表)用户栏目专家坐堂 → 求助复制数据到剪贴板中包括标题


  共有13061人关注过本帖树形打印复制链接

主题:求助复制数据到剪贴板中包括标题

帅哥哟,离线,有人找我吗?
czy
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/31 9:47:00 [显示全部帖子]

这个只能自己写代码了,论坛有类似的代码(我忘了是什么标题,没搜到)

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/31 20:58:00 [显示全部帖子]

这样应该差不多了。

 

 

Dim v,v1,v2 As String
With CurrentTable
    For i As Integer = .LeftCol To .RightCol
        v2 = v2 & chr(9) & .Cols(i).Caption
    Next
    For r As Integer = .TopPosition To .BottomPosition
        v1 = ""
        For c As Integer = .LeftCol To .RightCol
            If .Cols(c).Visible Then
                If .Rows(r).IsNull(c) Then
                    v1 = v1 & chr(9) & ""
                Else
                    v1 = v1 & chr(9) & .Rows(r)(c).ToString
                End If
            End If
        Next
        v = v & v1.Trim(chr(9)) & chr(13)
    Next
End With
ClipBoard.SetText(v2.Trim(chr(9)) & chr(13) & v.Trim(chr(13)))


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/31 23:35:00 [显示全部帖子]

楼上的代码处理不够严谨,如果复制多列,多行,当一行中只有某个或某几个单元格有数据时,粘贴时会产生数据错位挤堆现象,更正如下。

 

 

Dim v,v1,v2 As String
With CurrentTable
    For i As Integer = .LeftCol To .RightCol
        v2 = v2 & chr(9) & .Cols(i).Caption
    Next
    For r As Integer = .TopPosition To .BottomPosition
        v1 = ""
        For c As Integer = .LeftCol To .RightCol
            If .Cols(c).Visible Then
                If .Rows(r).IsNull(c) Then
                    v1 = v1 & chr(9) & .ToString
                Else
                    v1 = v1 & chr(9) & .Rows(r)(c).ToString
                End If
            End If
        Next
        v = v & v1.Trim(chr(9)) & chr(13)
    Next
End With
ClipBoard.SetText(v2.Trim(chr(9)) & chr(13) & v.Trim(chr(13)).Replace("Foxtable.Table",""))


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/10/31 23:39:00 [显示全部帖子]

说明,楼上的代码是排除隐藏列的,如果需要复制隐藏列的数据,可以将下面的if判断删除

 

If .Cols(c).Visible Then


End If

 


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/1 15:05:00 [显示全部帖子]

感觉这些属于个性化的东西,通用性强的功能可以加上,否则自己写代码也无妨。

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 10:32:00 [显示全部帖子]

Dim v,v1 As String
With CurrentTable
    For r As Integer = .TopPosition To .BottomPosition
        v1 = ""
        For c As Integer = .LeftCol To .RightCol
            If .Cols(c).Visible Then
                If .Rows(r).IsNull(c) Then
                    v1 = v1 & chr(9) & .ToString
                Else
                    v1 = v1 & chr(9) & .Rows(r)(c).ToString
                End If
            End If
        Next
        v = v & v1.Trim(chr(9)) & chr(13)
    Next
End With
ClipBoard.SetText(v.Trim(chr(13)).Replace("Foxtable.Table",""))

 回到顶部
帅哥哟,离线,有人找我吗?
czy
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/11/2 10:52:00 [显示全部帖子]

这样更严谨一点

 

Dim v,v1 As String
With CurrentTable
    For r As Integer = .TopPosition To .BottomPosition
        v1 = ""
        For c As Integer = .LeftCol To .RightCol
            If .Cols(c).Visible Then
                If .Rows(r).IsNull(c) Then
                    v1 = v1 & chr(9) & .ToString
                Else
                    v1 = v1 & chr(9) & .Rows(r)(c).ToString
                End If
            End If
        Next
        v = v & v1.Trim(chr(9)) & chr(13)
    Next
End With
If v.Trim(chr(13)).Replace("Foxtable.Table","") = "" Then
    ClipBoard.Clear
Else
    ClipBoard.SetText(v.Trim(chr(13)).Replace("Foxtable.Table",""))
End If


 回到顶部