ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > Excel单元格绘图工具

Excel单元格绘图工具

作者:绿色风 分类: 时间:2022-08-18 浏览:108
楼主
chrisfang
今天在网上闲逛时凑巧看到一个名为ExcelArt的软件介绍(

用VBA制作的思路其实很简单,应该已经有先人实践过,只是没有见过成熟产品,所以发上来和大家一起分享一下。[后来在网上搜索了一下,guanyp和andysky都有过类似作品:
http://club.excelhome.net/thread-296742-1-973.html
]
软件界面:

 

生成效果:

 

附件如下:

单元格画图V1.1(96DPI for ET).rar
  工程密码:exceltip
上述附件中的程序假定分辨率为96DPI,如需适用于其他的分辨率条件下,可以使用下面的附件程序,其中的坐标转换部分代码参考Winland大侠的代码。

单元格画图V1.0 for ET.rar



第一个附件中的代码如下:

  1. '以下代码位于用户窗体UesrForm1中
  2. Private Declare Function GetPixel Lib "gdi32" (ByVal hDC As Long, ByVal x As Long, ByVal y As Long) As Long
  3. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  4. Private Declare Function GetWindowDC Lib "user32" (ByVal hwnd As Long) As Long
  5. Public maxx, maxy
  6. Private Sub CommandButton1_Click()
  7. Dim hwnd, hDC As Long
  8. If maxx = 0 Then
  9. MsgBox "请先选择尺寸规格!"
  10. Exit Sub
  11. End If
  12.    
  13.     hwnd = FindWindow(vbNullString, Me.Caption)
  14.     hDC = GetWindowDC(hwnd)
  15.     ThisWorkbook.Sheets(1).Range("A1:OJ300").Interior.Color = -1
  16.     winx = (Me.Width - Me.InsideWidth) / 2
  17.     winy = Me.Height - Me.InsideHeight - winx
  18.     mx = (winx + Me.Image1.Left) * 4 / 3
  19.     my = (winy + Me.Image1.Top) * 4 / 3
  20.       
  21.        'Application.ScreenUpdating = False
  22.     For x = 1 To maxx
  23.         For y = 1 To maxy
  24.             iColor = GetPixel(hDC, mx + x * 4 / 3, my + y * 4 / 3)
  25.             ThisWorkbook.Sheets(1).Cells(y, x).Interior.Color = iColor
  26.         Next y
  27.     Next x
  28.     'Application.ScreenUpdating = True
  29.     MsgBox "绘制完成!"
  30. End Sub

  31. Private Sub CommandButton2_Click()
  32.     filestoOpen = Application.GetOpenFilename _
  33.                   (FileFilter:="Microsoft Image Files (*.jpg;*.jpeg; *.bmp), *.jpg;*.jpeg; *.bmp", _
  34.                    MultiSelect:=False, Title:="请选择图片文件")
  35.     If TypeName(filestoOpen) = "Boolean" Then
  36.         MsgBox "没有选取文件"
  37.         GoTo ExitHandler
  38.     Else
  39.         Me.Image1.Picture = LoadPicture(filestoOpen)
  40.     End If
  41. ExitHandler:
  42. End Sub
  43. Private Sub Label1_Click()
  44. ActiveWorkbook.FollowHyperlink Address:="http://www.exceltip.net/?fromuid=38", NewWindow:=True
  45. End Sub
  46. Private Sub OptionButton1_Click()
  47.     If Me.OptionButton1.Value = True Then
  48.         maxx = 200
  49.         maxy = 150
  50.         Call disparea(maxx, maxy)
  51.     End If
  52. End Sub
  53. Private Sub OptionButton2_Click()
  54.     If Me.OptionButton2.Value = True Then
  55.         maxx = 300
  56.         maxy = 225
  57.         Call disparea(maxx, maxy)
  58.     End If
  59. End Sub
  60. Private Sub OptionButton3_Click()
  61.     If Me.OptionButton3.Value = True Then
  62.         maxx = 400
  63.         maxy = 300
  64.         Call disparea(maxx, maxy)
  65.     End If
  66. End Sub
  67. Private Sub disparea(ByVal maxx As Integer, ByVal maxy As Integer)
  68.     Application.ScreenUpdating = False
  69.     Range(Cells(1, 1), Cells(1, maxx)).ColumnWidth = 0.54
  70.     Range(Cells(1, 1), Cells(maxy, 1)).RowHeight = 5
  71.     Range(Cells(1, 1), Cells(1, maxx)).EntireColumn.Hidden = False
  72.     Range(Cells(1, 1), Cells(maxy, 1)).EntireRow.Hidden = False
  73.     Range(Cells(1, maxx + 1), Cells(1, 16384)).EntireColumn.Hidden = True
  74.     Range(Cells(maxy + 1, 1), Cells(1048576, 1)).EntireRow.Hidden = True
  75.     Me.Image1.Left = Me.Image1.Left + (Me.Image1.Width - maxx) / 2
  76.     Me.Image1.Top = Me.Image1.Top + (Me.Image1.Height - maxy) / 2
  77.     Me.Image1.Width = maxx
  78.     Me.Image1.Height = maxy
  79.     Application.ScreenUpdating = True
  80. End Sub

2楼
chrisfang
几个应用实例:
1,照片
效果图

 
附件

冰激凌.rar


2,中国地图
效果图

 
附件

中国地图.rar


3,北京地图
效果图

 
附件

北京地图.rar


4,室内平面图
效果图

 
附件

室内平面图.rar


5,装修设计图
效果图

 
附件

装修设计图.rar
3楼
老七
确实是个好东东,牛人之作,我加了个进度条
 

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap