Set dominantContract=CreateObject("Scripting.Dictionary") '枚举合约,将主力合约的代码和对应市场代码分别作为键和值存入字典容器,供后续操作调用 sub GetDominantContract() Dim marketName dominantContract.RemoveAll marketName=Array("SQ","DQ","ZQ","ZJ") prefixStockNameOld="" contractLabel="" contractMarket="" contractVol=0 For j=0 To UBound(marketName) n=marketData.GetReportCount(marketName(j)) For i=0 To n-1 Set reportData=marketdata.GetReportDataByIndex(marketName(j),i) prefixStockNameCur=left(reportData.StockName,2) suffixStockNameCur=right(reportData.StockName,2) If suffixStockNameCur>="00" And suffixStockNameCur<"99" And reportData.Volume>0 Then If prefixStockNameCur<>prefixStockNameOld Then If contractLabel<>"" Then dominantContract.Add contractLabel,contractMarket End If prefixStockNameOld=prefixStockNameCur contractLabel=reportData.Label contractMarket=marketName(j) contractVol=reportData.Volume ElseIf reportData.Volume>contractVol then contractLabel=reportData.Label contractVol=reportData.Volume End If End If Next Next dominantContract.Add contractLabel,contractMarket end sub sub getout() Set objExcel = CreateObject("Excel.Application") objExcel.Visible = false objExcel.Workbooks.Open("D:\mxrb\moban.xls") '根据自己需要修改模版地址,模版要自己设计。 labels=dominantContract.Keys markets=dominantContract.Items '创建主力合约输出暂存对象 Set b = CreateObject("Stock.Block") output="" For i = 0 To dominantContract.Count-1 Set History = marketdata.GetHistoryData(labels(i),markets(i),5) '调用例题output=output&labels(i)&vbTab&markets(i)&vbTab&History.Close(History.Count-1)&vbTab&History.Volume(History.Count-1)&vbCrLf '主力合约盘面信息输出 m=4'EXCEL起始列 n=3'EXCEL起始行 objExcel.Cells(i+m,n+0).Value =labels(i) objExcel.Cells(i+m,n+1).Value =History.open(History.Count-1) objExcel.Cells(i+m,n+2).Value =History.close(History.Count-1) objExcel.Cells(i+m,n+3).Value =History.close(History.Count-1)-History.close(History.Count-2) objExcel.Cells(i+m,n+4).Value =History.Volume(History.Count-1) objExcel.Cells(i+m,n+5).Value =History.Volume(History.Count-1)-History.Volume(History.Count-2) objExcel.Cells(i+m,n+6).Value =History.Openint(History.Count-1) objExcel.Cells(i+m,n+7).Value =History.Openint(History.Count-1)-History.Openint(History.Count-2) '相关公式数据判断输出 'ma判断 Set Formula = marketdata.STKINDI(labels(i),markets(i),"MA",0,4) ma1 = Formula.GetBufData("MA1",Formula.DataSize-1) '显示最后周期指标线数值 '输出 application.MsgOut Date &" " &Time&" "& labels(i)&" "ma1 '输出多空、资金、建议、关键点位到EXCEL objExcel.Cells(i+m,n+8).Value =ma1 objExcel.Cells(1,n+9).Value =Date &" " &Time next objExcel.displayalerts=false objExcel.activeWorkbook.saveas("D:\mxrb\"&Date&".xls") '报告保存地址 objExcel.displayalerts=true objExcel.Quit application.MsgOut Date &" " &Time& "检索主力合约" Application.MsgOut "输出完毕!" 'msgbox "输出完毕!" end sub Sub zhuli()'主函数 call GetDominantContract() call getout() End Sub