【发布时间】:2015-10-04 23:03:50
【问题描述】:
我正在尝试使用 DDE 方法编写 vba 代码。该代码旨在复制 Excel 表的一组列,并将其粘贴到 EES(工程方程求解器)软件的参数表中。然后运行 EES 代码来解表,生成输出数据列。然后将此数据复制并粘贴回包含输入数据的 Excel 文件中。
由于我是 vba 新手,因此我使用 EES(从 EXCEL 执行 EES 宏命令)提供的示例作为指导。
将数据粘贴回 excel 电子表格时出现问题:代码似乎忽略了小数分隔符!我的 excel 和 EES 都设置为使用逗号作为小数点分隔符,当我手动从 EES 复制结果并粘贴到 excel 时,数字被正常粘贴,带有逗号(excel 中的数字也正确粘贴到 ESS )。
但是,当我设置执行此任务的代码时,诸如“15,47”之类的数字在 Excel 中粘贴为“1,55E+12”或“1547421377050”。代码如下:
Private Sub cmdDDE_Click()
Dim ChNumber As Integer
Dim myShell As String
ChNumber = -1
myShell = frmEESDDE.txtApp.Text
On Error Resume Next
'Copy selected rows into clipboard
Range("B2:G1401").Select
Selection.Copy
Shell_R = Shell(myShell, 1)
If Shell_R <> "" Then
'Initiate DDE
ChNumber = Application.DDEInitiate(app:="ees", topic:="")
If ChNumber <> -1 Then
'Open EES
Application.DDEExecute ChannelNumber, "[Open C:\EES\Tablesolve.ees]"
'Paste data
Application.DDEExecute ChannelNumber, "[Paste Parametric 'Table 1' R1 C1]"
'Solve parametrictable
Application.DDEExecute ChannelNumber, "[SOLVETABLE 'TABLE 1' Rows=1..1400]"
'Copy results
Application.DDEExecute ChannelNumber, "[COPY ParametricTable 'Table 1' R1 C7:R1400 C14]"
'Choose separators
Application.DecimalSeparator = ","
Application.ThousandsSeparator = "."
Application.UseSystemSeparators = False
'Paste results from EES into EXCEL
Application.Paste Destination:=Worksheets("Sheet1").Range("H2:O1440")
Application.UseSystemSeparators = True
'Quit EES and Terminate DDE
DDEExecute ChNumber, "QUIT"
Application.DDETerminate ChNumber
Else
MsgBox "Unable to initiate connection to EES", vbExclamation, "EES DDE"
End If
frmEESDDE.Hide
Else
MsgBox "The application, " & myShell & ", was not found", vbExclamation, "EES DDE"
End If
PS = 如您所见,我已尝试将小数点分隔符设置为“,”,如以下链接中所建议的:Pasting decimal numbers in excel / comma and point decimal separator,但它也不起作用!
感谢您的帮助!
【问题讨论】: