注册 登录
编程论坛 VB6论坛

如何将VB中计算的结果保存到Excel中

孙东东007 发布于 2015-06-08 17:02, 4168 次点击
Private Sub Command1_Click()
n = Val(Text5.Text)
d = Val(Text6.Text)
vd = 3.14 / 60 * n * d * 0.1 * 0.1 * 0.1
Text2.Text = vd
If Dir("D:\VB程序(千万别动)\excel.bz") = "" Then '
Set xlApp = CreateObject("Excel.Application") '
xlApp.Visible = True '
Set xlBook = xlApp.Workbooks.Open("E:\VB程序(千万别动)\数据.xls") '
Set xlsheet = xlBook.Worksheets(1) '
xlsheet.Activate '
xlsheet.Cells(1, 1) = "Val(Text2.Text)" '
xlBook.RunAutoMacros (xlAutoOpen)
Else
MsgBox ("EXCEL已打开")
End If
End Sub
问:这个计算数值怎么显示,如果我有很多这样的公式需要保存到这一个Excel中应该怎么编写代码?
13 回复
#2
孙东东0072015-06-08 17:17
大神们,,,
#3
wmf20142015-06-08 18:18
为什么不*0.001,而要乘3个0.1?
#4
孙东东0072015-06-08 19:40
回复 3楼 wmf2014
亲,我问的是怎么把得到的很多数值保存到Excel中,这个只是其中一个
#5
风吹过b2015-06-08 19:50
程式分二部分,
excel 对象定义为全局的。
第一部分,负责打开文件和保存文件,一共是二个函数。
第二部分,负责写入数据,可以是一个函数,也可以直接引用,建议用函数,主要是可以封装校验代码。

最后,如果一次性写入大量的数据,我的建议是使用 csv 格式的文件,但这种文件是给电脑看的,不支持宏,人要看就需要重排版,无数据类型设置。
#6
孙东东0072015-06-09 09:07
回复 5楼 风吹过b
大神,我是菜鸟,我做了一个汽车传动系设计的一个计算软件,需要计算很多公式,每个窗口的计算结果都需要被保存到这个Excel中,我现在能保存计算结果了,可是在计算下一个公式的时候它就会另外打开一个Excel,您看看应该怎么编写这个程序,我上面写的也是在网上找的。
#7
lianyicq2015-06-09 09:12
回复 楼主 孙东东007
Set xlApp = CreateObject("Excel.Application") '
xlApp.Visible = True '
Set xlBook = xlApp.Workbooks.Open("E:\VB程序(千万别动)\数据.xls") '
Set xlsheet = xlBook.Worksheets(1) '
xlsheet.Activate '
xlsheet.Cells(1, 1) = "Val(Text2.Text)" '
xlBook.RunAutoMacros (xlAutoOpen)
以上代码是一按钮点击事件中,每点一次当然都要set一次.使得打开多个EXCEL应用
如果只对一个工作簿,一个工作表操作,在form_load中打开
#8
孙东东0072015-06-09 09:19
在form_load中打开是什么意思?请明示~~~~
#9
孙东东0072015-06-09 09:21
应该怎么编写程序呢?
#10
风吹过b2015-06-09 09:30
好吧,找到一个 5年前写的代码,你参考一下吧。

程序代码:
        Set Excel1 = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then             '如果此处有错误号,则执行后面内容
        Err.Clear                       '要先清掉前面的错误号,否则后面的判断会出现失误
        Set Excel1 = CreateObject("Excel.Application")
    End If
   
    If Err.Number <> 0 Then             '如果打开或创建对象均失败,则提示,并退出处理过程
        MsgBox "打开 Excel 文件失败!", vbCritical, 程序标题
        Exit Sub
    End If


首先,引用已运行的 excel ,如果引用失败,则创建一下,如果还失败,那就报错。
#11
孙东东0072015-06-09 09:32
我试试,谢谢啦
#12
风吹过b2015-06-09 09:34
再给一段 合并 EXCEL 的代码参考吧。

程序代码:
Private Sub Command1_Click()

ExcelID.Visible = True          '显示EXCEL ,如果不用显示,这里就不显示
ExcelID.Caption = "应用程序调用 Microsoft Excel"            'EXECL 标题
ExcelID.Workbooks.Open (Text1.Text)        ' 打开文件
ExcelID.Worksheets.Item(1).Activate         '设置第一个工作表为活动工作表
Dim 起始位置 As Long
起始位置 = CLng(InputBox("请输入起始行号", "起始行号", 4))
Dim j As Long
    Dim i As Long
For j = 0 To List1.ListCount - 1
    openEID.Workbooks.Open (List1.List(j))          ' 打开文件
    openEID.Worksheets.Item(1).Activate         '设置第一个工作表为活动工作表
    For i = 1 To 79
        ExcelID.Cells(起始位置 + j, 坐标(i).NEWY) = openEID.Cells(坐标(i).OLDY, 坐标(i).OLDX)
    Next i
    openEID.Quit
    Call 进度条(j / (List1.ListCount - 1))
Next j
ExcelID.SaveWorkspace
ExcelID.Quit
End Sub


程序代码:
Call 置坐标(1, "67,3,31")
Call 置坐标(2, "66,7,30")
Call 置坐标(3, "5,3,4")
Call 置坐标(4, "6,5,4")
Call 置坐标(5, "57,5,22")
Call 置坐标(6, "4,7,3")
Call 置坐标(7, "44,7,17")
Call 置坐标(8, "33,3,14")
Call 置坐标(9, "35,7,14")
Call 置坐标(10, "34,5,14")
Call 置坐标(11, "50,3,20")
Call 置坐标(12, "65,5,30")
Call 置坐标(13, "12,5,7")
Call 置坐标(14, "59,5,23")
Call 置坐标(15, "60,3,28")
Call 置坐标(16, "9,5,6")
Call 置坐标(17, "15,5,8")
Call 置坐标(18, "17,3,9")
Call 置坐标(19, "25,3,11")
Call 置坐标(20, "27,3,12")
Call 置坐标(21, "26,5,11")
Call 置坐标(22, "62,3,29")
Call 置坐标(23, "43,5,17")
Call 置坐标(24, "64,3,30")
Call 置坐标(25, "16,7,8")
Call 置坐标(26, "3,5,3")
Call 置坐标(27, "56,3,22")
Call 置坐标(28, "41,7,16")
Call 置坐标(29, "38,7,15")
Call 置坐标(30, "24,7,10")
Call 置坐标(31, "21,5,10")
Call 置坐标(32, "18,5,9")
Call 置坐标(33, "61,7,28")
Call 置坐标(34, "70,3,27")
Call 置坐标(35, "73,4,27")
Call 置坐标(36, "76,5,27")
Call 置坐标(37, "79,6,27")
Call 置坐标(38, "82,7,27")
Call 置坐标(39, "14,3,8")
Call 置坐标(40, "36,3,15")
Call 置坐标(41, "37,5,15")
Call 置坐标(42, "69,3,26")
Call 置坐标(43, "72,4,26")
Call 置坐标(44, "75,5,26")
Call 置坐标(45, "78,6,26")
Call 置坐标(46, "81,7,26")
Call 置坐标(47, "29,7,12")
Call 置坐标(48, "51,5,20")
Call 置坐标(49, "55,7,21")
Call 置坐标(50, "7,7,4")
Call 置坐标(51, "8,3,6")
Call 置坐标(52, "40,5,16")
Call 置坐标(53, "42,3,17")
Call 置坐标(54, "39,3,16")
Call 置坐标(55, "49,5,19")
Call 置坐标(56, "58,3,23")
Call 置坐标(57, "28,5,12")
Call 置坐标(58, "30,3,13")
Call 置坐标(59, "2,3,3")
Call 置坐标(60, "45,3,18")
Call 置坐标(61, "53,3,21")
Call 置坐标(62, "52,7,20")
Call 置坐标(63, "48,3,19")
Call 置坐标(64, "47,7,18")
Call 置坐标(65, "20,3,10")
Call 置坐标(66, "10,7,6")
Call 置坐标(67, "11,3,7")
Call 置坐标(68, "46,5,18")
Call 置坐标(69, "13,7,7")
Call 置坐标(70, "63,7,29")
Call 置坐标(71, "54,5,21")
Call 置坐标(72, "19,7,9")
Call 置坐标(73, "31,5,13")
Call 置坐标(74, "32,7,13")
Call 置坐标(75, "68,3,25")
Call 置坐标(76, "71,4,25")
Call 置坐标(77, "74,5,25")
Call 置坐标(78, "77,6,25")
Call 置坐标(79, "80,7,25")


End Sub

Private Sub 置坐标(cs As Long, cs2 As String)

Dim fj() As String
    fj = Split(cs2, ",")
    坐标(cs).NEWY = fj(0)
    坐标(cs).OLDX = fj(1)
    坐标(cs).OLDY = fj(2)
End Sub
#13
lianyicq2015-06-09 09:35
回复 9楼 孙东东007
程序代码:
Dim EXAPP As Excel.Application
Dim WB As Excel.Workbook
Dim sht As Excel.Worksheet

Private Sub Form_Load()
  Set EXAPP = CreateObject("excel.application")
  EXAPP.Visible = True
  Set WB = EXAPP.Workbooks.Open("文件路径及文件名")
  Set sht = WB.Worksheets("工作表名")
End Sub

Private Sub Form_Unload(Cancel As Integer)
  WB.Close
  Set sht = Nothing
  Set WB = Nothing
  Set EXAPP = Nothing
End Sub

#14
lypower2015-06-09 09:47
回复 8楼 孙东东007
就是你把打开excel的代码写到窗体加载模块中,按钮点击模块中只写数据保存代码
1