我有一个Excel文件,其中包含一系列文本旁边的多个形状对象.我编写了一个脚本来识别每个形状的位置,识别文本右侧和下方延伸的单元格数量,将其设置为范围,然后将其导入图表对象,以便将其保存为.jpg.
问题是在创建图表和粘贴字符串之间存在竞争条件.如果我单步执行脚本它工作正常,但是一旦我运行它我只得到空白图像.
我试过Application.ScreenUpdating = True; Application.PrintCommunication = True; 和DoEvents
我也尝试过Application.Wait,但即使让它等待十秒也不行,当踩过代码时,图表加载的时间不到2秒.
最近我也尝试了kernel32 sleep方法,但这似乎也没有用.同样,我让系统睡眠的时间远远超过了我的踩踏.我还在With语句中的每一行之间添加了所有上述方法(显然不是作为解决方案,而是作为测试),这也不起作用..
在这一点上,我完全不知所措.
如果我在.Chart.Paste停止然后运行脚本(F5),然后继续点击Run,那么脚本运行得非常好.我只是不希望用户必须坐在那里并运行600次.
在创建图表和粘贴文本之间存在明显的冗余.这一切都是为了让代码在运行时正常工作,一旦找到解决方案,大部分代码都将被删除.
Option Explicit
Public Function ChartCheck() As String
ReCheckChart:
DoEvents
If ActiveWorkbook.ActiveSheet.ChartObjects.Count > 0 Then
GoTo ContinuePaste:
Else
GoTo ReCheckChart:
ContinuePaste:
End If
End Function
Public Function GetFolder() As String
Dim fldr As FileDialog
Dim sItem As String
Set fldr = Application.FileDialog(msoFileDialogFolderPicker)
With fldr
.Title = "Select a Folder to Save the Images In"
.AllowMultiSelect = False
If .Show -1 Then GoTo NextCode:
sItem = .SelectedItems(1) …Run Code Online (Sandbox Code Playgroud)