Office中国论坛/Access中国论坛
标题:
色空间、极坐标以及那些ChatGPT无法解决的问题——保存Excel对象为图片
[打印本页]
作者:
roych
时间:
2023-5-8 05:28
标题:
色空间、极坐标以及那些ChatGPT无法解决的问题——保存Excel对象为图片
先说需求:输入任意一组指定范围的数X、Y(以下称为“像素点”),例如,像素点为(30,-100),要求它落在这个彩色圆(这个又叫色空间,以下称为“色空间”)的内部;再输入像素点为(-50,60),要求它也落在色空间内部,应该怎么做?
[attach]64542[/attach]
答:将直角坐标系下,像素点的值转为极坐标系所对应的值。这样一来,极径就等于sqrt(power(X,2)+power(Y,2)),任意像素点都会落在色空间内部。直角坐标系只需要设置为一个单位圆即可。
这是一个朋友向我提出的问题,思路只是初步。因为还有更麻烦的事情:怎么在窗体上把它呈现出来。
当时有两三种方法。
1、将像素点转为图像对象,添加到色空间图片上,合成图片后输出。这个方法Python很容易处理,但VBA很麻烦,需要声明一大堆win32 API函数。
2、使用第三方插件,例如echarts,在极坐标上绘制散点图。这个在技术上很容易实现。问题是,怎么保证这些点落在色空间里面?那就得调整echarts图表的坐标轴与色空间的一致对齐。而这需要调整的时间就很长了。重点时,echarts坐标轴并不方便平移(对,是平移,不是插队
)。
3、在Access中绘制散点图,再设置背景图为色空间图,进行叠合。最后同样遇到方法2的问题,没法对齐。因为当删除坐标刻度、图表标题之类时,坐标轴会自动王左上角移动。
4、在Excel里叠加。设置图表背景透明后,很容易实现。接下来只剩一个问题:怎么把叠合后的图片更新到窗体上。
这个问题,从下午开始问到晚上,chatGPT始终没答对。这个就是chatGPT的局限性了:如果网上有很多例子,它可以回答得很准,而资料较少时就难免搜不到,那只好一本正经地胡说八道了。
比如,它提供的代码里始终用shape.export来导出图片。而事实上,这个方法仅限于单个图表(chart),其它类型。比如与图片组合的图表,或者图片,都没有这个方法。
我是找到了站长的大作(
http://www.office-cn.net/article-15042-1.html
),抄过来,然后稍稍改一下才解决的。是的,不能直接export,需要设置图片的文件头之类。
(感谢TVB,感谢Parco,感谢站长,还有众多支持我的粉丝
)
产品如下所示(请留意右下角的小白点):
[attach]64543[/attach]
——
2023-5-8 13:22
更新
:应朋友要求,
添加了保护工作表
。
这里科普一下保护工作表的做法(会操作的请直接下拉页面到附件位置):
先全选所有单元格,解除锁定:
[attach]64547[/attach]
再选择需要保护的单元格,进行锁定:
[attach]64548[/attach]
最后设置解锁密码:
[attach]64549[/attach]
——
2023-5-9 15:26
更新
:应朋友要求,
添加L值,按LAB计算
。
[attach]64544[/attach]
--------------------------------我是分割线--------------------------------
朋友说,应该加上Excel错误处理,避免打开一个文件多次出现弹窗。
其实这个问题我也考虑过,一般用GetObject和CreateObject来查找是否打开了Excel。如果打开了急用GetObject,如果没打开就用CreateObject。示例代码如下:
Dim exl As Excel.Application
Dim wb As Excel.Workbook
On Error Resume Next '忽略错误
Set exl = GetObject(, "Excel.Application") '查找一个正在运行的 Excel 拷贝
If Err.Number <> 0 Then '如果 Excel 没有运行则
MsgBox Err.Description
Set exl = CreateObject("Excel.Application") '运行它
End If
Err.Clear ' 清除发生错误的 Err 对象
Set wb = exl.Workbooks.Open(strExcelFileName)
以下从略……
复制代码
但问题是,处理完数据后,是否需要退出Excel程序?如果用户正好打开了一个别的Excel文件,退出程序,可能会影响她/他的工作(比如文件还没保存)。如果不退出,那么还是会驻留在线程里,这和代码报错后没法退出Excel进程没什么区别。
顺带问一下,大家一般是怎么处理的?
作者:
huanghyd
时间:
2023-5-8 08:21
感谢分享,学习学习,
作者:
390012370
时间:
2024-5-3 22:12
谢谢分享!
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3