|
楼主 |
发表于 2012-11-13 00:22
|
显示全部楼层
lanxehu 发表于 2012-11-12 14:58
更新银行汇率时出错,所有货币汇率都变成这样了
貌似中国银行的汇率牌价表又改格式了,如果过一两天中国银行的网页报表格式没有变回来,那么我会逐步更新程序。目前可以用如下方法修正问题:
1. 开灯打开开发工具里的,Visual Basic脚本编辑器;
2. 找到Microsoft Excel对象下的“EHF_05SysStg(设置)”表对象,找到 Private Sub CurrencyUpdate_Click() 子程序;
3. 用如下代码替换原来的程序
Private Sub CurrencyUpdate_Click()
EHF_05SysStg.[J18].Value = "正在导入网络数据..."
With TX_00ChtData.QueryTables.Add(Connection:="URL;http://www.boc.cn/sourcedb/whpj", Destination:=TX_00ChtData.Range("$K$1"))
.Name = "whpj"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "8"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
On Error GoTo InternetFaild
.Refresh BackgroundQuery:=False
End With
Dim i As Integer
With TX_00ChtData
For i = 2 To EHF_05SysStg.[C1048576].End(xlUp).Row
Select Case EHF_05SysStg.Cells(i, 3).Value
Case "人民币"
EHF_05SysStg.Cells(i, 4).Value = 1#
Case "美元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("美元").Row, 16).Value / 100, 4)
Case "欧元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("欧元").Row, 16).Value / 100, 4)
Case "英镑"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("英镑").Row, 16).Value / 100, 4)
Case "港币"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("港币").Row, 16).Value / 100, 4)
Case "澳元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("澳大利亚元").Row, 16).Value / 100, 4)
Case "纽元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("新西兰元").Row, 16).Value / 100, 4)
Case "加元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("加拿大元").Row, 16).Value / 100, 4)
Case "日元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("日元").Row, 16).Value / 100, 4)
Case "韩元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("韩国元").Row, 16).Value / 100, 4)
Case "卢布"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("卢布").Row, 16).Value / 100, 4)
Case "澳门元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("澳门元").Row, 16).Value / 100, 4)
Case "泰国铢"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("泰国铢").Row, 16).Value / 100, 4)
Case "新加坡元"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("新加坡元").Row, 16).Value / 100, 4)
Case "瑞士法郎"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("瑞士法郎").Row, 16).Value / 100, 4)
Case "瑞典克朗"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("瑞典克朗").Row, 16).Value / 100, 4)
Case "丹麦克朗"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("丹麦克朗").Row, 16).Value / 100, 4)
Case "挪威克朗"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("挪威克朗").Row, 16).Value / 100, 4)
Case "菲律宾比索"
EHF_05SysStg.Cells(i, 4).Value = Round(.Cells(.Range("K:K").Find("菲律宾比索").Row, 16).Value / 100, 4)
End Select
Next i
.Range("K:S").Delete
End With
EHF_05SysStg.[J18].Value = "在线数据导入成功..."
ActiveWorkbook.Connections(1).Delete '2003版代码不同
MsgBox "中国银行外汇牌价导入成功!", vbOKOnly, "提示"
EHF_05SysStg.[J18].Value = " 最后更新:" & Date
Exit Sub
InternetFaild: '导入失败报错转到这一行
Resume ErrorClear_02
ErrorClear_02:
ActiveWorkbook.Connections(1).Delete '2003版代码不同,没有此行
Message = MsgBox("更新失败!可能的原因:" & Chr(10) & Chr(10) & _
"1. 网络连接失败请确认网络连接正常,并确保能够登陆中国银行主页;" & Chr(10) & Chr(10) & _
"2. 中国银行网页已失效,请到ExcelHome论坛查看更新办法。", vbExclamation, "错误")
EHF_05SysStg.[J18].Value = " 最近一次导入失败!"
End Sub
问题没有解决请再报错,谢谢!
|
|