数值元素赋值给EXCEL一块连续区域的有关问题

数值元素赋值给EXCEL一块连续区域的问题
LOCAL ASZ[50,7]
STORE [] TO ASZ
FOR lnI=1 TO 50
    FOR lnI1=1 TO 7
      ASZ[lnI,lnI1]=PADL(lnI*lnI1,4,[0])
    ENDFOR
ENDFOR

如何将上面的数组元素赋值给EXCEL一块连续的区域,假如连续区域为range("b2:h51")
求最简方法
------解决方案--------------------
换个思路,用 VFP 的 DataToClip 方法
参考帖子:http://bbs.csdn.net/topics/390657362
------解决方案--------------------
vb 中确实可以用 range('..').value = 数组名 这样的方式来直接用数组给一个区域赋值,但 vfp 是按值传递数组的,所以只会传第一个数组元素。vfp 不承认 oExcel.range('..').value = @数组名 是合法的表达式,也没有类似 AddressOf 或者 VarPtr 这样的函数来取数组地址;但是,vfp 却可以用 func(@数组名) 的形式将数组地址传给函数。
所以,可以先在 Excel 中动态创建一个宏,然后将数组传给这个宏
Local ASZ[50,7]
Store [] To ASZ
For lnI=1 To 50
    For lnI1=1 To 7
        ASZ[lnI,lnI1]=Padl(lnI*lnI1,4,[0])
    Endfor
Endfor

Local cc, oo As Excel.Application

m.oo = Newobject('Excel.Application')
If m.oo.Workbooks.Count < 1
    m.oo.Workbooks.Add()
Endif
If m.oo.Workbooks(1).Sheets.Count < 1
    m.oo.Sheets.Add()
Endif

TEXT to m.cc noshow
Sub ArrayFill(vfparray)
Range("b2").Resize(UBound(vfparray,1), UBound(vfparray,2)).Value = vfparray
End Sub
ENDTEXT
* 执行下面这行需要勾选 Excel 的信任选项: 工具->宏->安全性->可靠发行商->信任对"VB项目"的访问
m.oo.ActiveWorkbook.VBProject.VBComponents.Add(1).CodeModule.AddFromString(m.cc)
m.oo.Run('ArrayFill', @asz)
m.oo.Visible = .T.

这会要求用户按上面代码中注释的那样先打开这个安全开关,多少有些不友好,用户通常为了防范宏病毒都是关闭它的