VB 保存Excel文件问题

nigelyoyo 2009-10-06 12:24:47
保存出的Excel数据文件,想在程序中就转化成数值类型
能够在打开Excel文件后,
能够直接利用数据画图,而不需要再次转化数据类型
程序中的数据是存放在二维数组里的,然后再保存在Excel中
请教大侠们,该怎么一步到位~!
...全文
1086 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
getemail 2009-10-09
  • 打赏
  • 举报
回复
错了
是:
.Range(.Worksheets(1).Cells(i, j).Value = a(i,j)
如果要转置就用
.Range(.Worksheets(1).Cells(j, i).Value = a(i,j)
getemail 2009-10-09
  • 打赏
  • 举报
回复
错了
是:
.Range(.Worksheets(1).Cells(i, j), .Worksheets(1).Cells(11, 11)).Value = a(i,j)
如果要转置就用
.Range(.Worksheets(1).Cells(j, i), .Worksheets(1).Cells(11, 11)).Value = a(i,j)
getemail 2009-10-09
  • 打赏
  • 举报
回复
EXCEL里面也是一块面积,所以也是二维的,也要用双重循环
For i = 1 To 10
For j = 1 To 10
a(i, j) = Format(Val(i), "#0.00")
.Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = a(i,j)
Next j
Next i
Flyingdragon168 2009-10-09
  • 打赏
  • 举报
回复
格式化一下單元格,讓其為數值列,可以在Excel錄制一個宏,看看宏代碼就知道如何做了。
nigelyoyo 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 getemail 的回复:]
这句话就是赋值
另外你用从"引用"里面把Excel引用一下

引用 24 楼 nigelyoyo 的回复:
引用 20 楼 getemail 的回复:
两维数组用双重循环
比如你上面的代码在赋值的时候就可以先格式化:

For i = 1 To 10
    For j = 1 To 10
        a(i, j) = Format(Val(i), "#0.00")
    Next j
Next i


数组格式化之后,该怎么赋值到Excel表啊~!
还是能用  .Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = a
这句话啊?

[/Quote]

那我 For i = 1 To 10
For j = 1 To 10
a(i, j) = Format(Val(i), "#0.00")
Next j
Next i
这么做了之后,怎么把这个二维数组,保存到Excel表中,并且能够达到我的要求啊?Excel单元格没有绿色小三角
getemail 2009-10-09
  • 打赏
  • 举报
回复
这句话就是赋值
另外你用从"引用"里面把Excel引用一下

[Quote=引用 24 楼 nigelyoyo 的回复:]
引用 20 楼 getemail 的回复:
两维数组用双重循环
比如你上面的代码在赋值的时候就可以先格式化:

For i = 1 To 10
    For j = 1 To 10
        a(i, j) = Format(Val(i), "#0.00")
    Next j
Next i



数组格式化之后,该怎么赋值到Excel表啊~!
还是能用  .Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = a
这句话啊?
[/Quote]
nigelyoyo 2009-10-09
  • 打赏
  • 举报
回复
我发现这样做了之后,还是没用么
nigelyoyo 2009-10-09
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 getemail 的回复:]
两维数组用双重循环
比如你上面的代码在赋值的时候就可以先格式化:

For i = 1 To 10
    For j = 1 To 10
        a(i, j) = Format(Val(i), "#0.00")
    Next j
Next i

[/Quote]

数组格式化之后,该怎么赋值到Excel表啊~!
还是能用 .Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = a
这句话啊?
lyserver 2009-10-09
  • 打赏
  • 举报
回复
将.Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = Format(Val(a), "#0.00") 改成两行语句:
.Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = a '给区域赋值
.Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).NumberFormatLocal = "#0.00" '设置区域数字格式
getemail 2009-10-09
  • 打赏
  • 举报
回复
没有,这种方法不慢的

[Quote=引用 21 楼 nigelyoyo 的回复:]
如果是二维数组,且数据量很大的情况下,这样会影响程序效率的,有没有好点的办法啊?

[/Quote]
nigelyoyo 2009-10-09
  • 打赏
  • 举报
回复
如果是二维数组,且数据量很大的情况下,这样会影响程序效率的,有没有好点的办法啊?
getemail 2009-10-09
  • 打赏
  • 举报
回复
两维数组用双重循环
比如你上面的代码在赋值的时候就可以先格式化:

For i = 1 To 10
For j = 1 To 10
a(i, j) = Format(Val(i), "#0.00")
Next j
Next i
getemail 2009-10-09
  • 打赏
  • 举报
回复

i=0 to 数组下标
Format(Val(a(i)), "#0.00")
next i
一个一个地格式化之即可

[Quote=引用 18 楼 nigelyoyo 的回复:]
Dim a() As String
Dim i As Integer
Dim j As Integer

ReDim a(10, 10)

For i = 1 To 10
    For j = 1 To 10
        a(i, j) = i
    Next j
Next i

Set VBExcel = CreateObject("Excel.Application")
Set VBExcelWorkbook = VBExcel.Workbooks.Add

With VBExcelWorkbook.Application
    .Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = Format(Val(a), "#0.00")
   
End With

    VBExcelWorkbook.SaveAs ("e:\123.xls")
    VBExcelWorkbook.Saved = True
    VBExcelWorkbook.Close
   
    VBExcel.Quit
    Set VBExcel = Nothing
    Set VBExcelWorkbook = Nothing

End Sub


这边提示类型不正确,我想问,如果  Format(Val(a), "#0.00") 这个地方是二维数组,该怎么做啊?急~!


[/Quote]
nigelyoyo 2009-10-09
  • 打赏
  • 举报
回复
Dim a() As String
Dim i As Integer
Dim j As Integer

ReDim a(10, 10)

For i = 1 To 10
For j = 1 To 10
a(i, j) = i
Next j
Next i

Set VBExcel = CreateObject("Excel.Application")
Set VBExcelWorkbook = VBExcel.Workbooks.Add

With VBExcelWorkbook.Application
.Range(.Worksheets(1).Cells(1, 1), .Worksheets(1).Cells(11, 11)).Value = Format(Val(a), "#0.00")

End With

VBExcelWorkbook.SaveAs ("e:\123.xls")
VBExcelWorkbook.Saved = True
VBExcelWorkbook.Close

VBExcel.Quit
Set VBExcel = Nothing
Set VBExcelWorkbook = Nothing

End Sub


这边提示类型不正确,我想问,如果 Format(Val(a), "#0.00") 这个地方是二维数组,该怎么做啊?急~!

无·法 2009-10-06
  • 打赏
  • 举报
回复
创建excel对象,可以打开一个模板文件 然后操作。createobject("excel.application"),这个里面提供了n多类,基本手工可以操作的都可以用代码实现,要看类结构就直接在excel中打开vba,随便新建个宏,然后在那个酷似vb的ide工具里面按f2
贝隆 2009-10-06
  • 打赏
  • 举报
回复
哦~~~~~
nigelyoyo 2009-10-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 veron_04 的回复:]
直接将数组中的数据绘制图形就可以了吧?
[/Quote]
不是的,先是保存出一系列的数据,然后画图行是用户自己的需求
现在要做的,就是替用户省去他转化数据类型的操作
数据是需要的,不仅仅是有图形~!
贝隆 2009-10-06
  • 打赏
  • 举报
回复
直接将数组中的数据绘制图形就可以了吧?
lyserver 2009-10-06
  • 打赏
  • 举报
回复
Excel的Range对象有一个Value属性,该属性指向一个下标下界为1的二维Variant数组,LZ可依此快速读写Excel的单元格的值.
nigelyoyo 2009-10-06
  • 打赏
  • 举报
回复
不行,要求保存的格式就是xls,帮忙想想办法吧
加载更多回复(11)

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧