gpt4 book ai didi

VBA - 粘贴外部数据时Excel忽略逗号

转载 作者:行者123 更新时间:2023-12-02 11:55:52 24 4
gpt4 key购买 nike

我正在尝试使用 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但它也不起作用!

感谢您的帮助!

最佳答案

问题解决了!我还在 stackoverflow 的葡萄牙语社区发布了这个问题,并得到了非常有用的答案。经过一些小小的调整,它解决了我的问题!葡萄牙语解决方案的链接如下:

https://pt.stackoverflow.com/questions/74860/vba-excel-n%C3%A3o-reconhece-v%C3%ADrgula-de-dados-externos

但对于那些喜欢英文版本的人,我将尝试总结修复代码的工作:

1-声明范围变量:

Dim interval As Range 'represent the cells in which info was pasted
Dim Cell As Range 'to allow cell format to be changed

2- 从 esternal 程序复制结果之后并粘贴之前:

Set interval = Worksheets("Sheet1").Range("H2:O1440") 'set interval to paste the results
interval.NumberFormat = "@" 'set format to text

3-粘贴后:

interval.NumberFormat = "General" 'set format to general
For Each Cell In interval
Cell.Value = FormatNumber(CDbl(Cell.Value), 2) 'set only 2 decimal places
Cell.Value = CDbl(Cell.Value) 'set to double
Next

其余代码保持原样。

特别感谢 Cantoni 在 pt 版本中帮助解决问题。

关于VBA - 粘贴外部数据时Excel忽略逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31438318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com