添加数据后的K线图 2. 创建分解的宏 根据分解后的简单工作,按照上一节介绍的工作步骤,采用录制宏的方法创建三个宏:Import_Data、Copy_Data和Update_Chart。由于篇幅所限,不一一介绍具体录制宏的具体操作。以下给出录制、编辑后的VBA宏。
Sub Import_Data()
' 导入股票行情数据
' 快捷键: Ctrl+Shift+I
Workbooks.Open FileName:="F:\EXCEL\ST1.XLS"
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="沈阳万利"
Range("A1:K9").Select
Selection.Copy
Sheets.Add
ActiveSheet.Paste
Range("A:C,H:J").Select
Range("C1").Activate
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("A2:E2").Select
Selection.Copy
Range("A3").Select
Selection.PasteSpecial Paste:=xlAll, _
Operation:=xlNone, SkipBlanks:=False, _
Transpose:=True
End Sub
Sub Copy_Data()
' 复制股票行情数据
' 快捷键: Ctrl+Shift+C
Windows("ST1.XLS").Activate
Range("A3:A7").Select
Selection.Copy
Windows("ST2.XLS").Activate
Range("A2").Select
Selection.End(xlToRight).Select
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveSheet.Paste
End Sub
Sub Update_Chart()
' 更新K线图
' 快捷键: Ctrl+Shift+U
Sheets("K线图").Select
ActiveChart.SeriesCollection.Extend _
Source:=Sheets("沈阳万利").Range("CS2:CS6"),_
Rowcol:=xlRows, CategoryLabels:=False
End Sub
请注意,Import_Data宏中的文件名、路径名会因操作的环境不同,后半部分主要是关于工作表行列转置的操作的宏语句,具体操作方法可以参见联机帮助中“转置行与列”。Copy_Data宏中的Selection.End(xlToRight).Select语句表示选定当前行的最后一个包含数据的单元格(操作时按Ctrl+→键)。语句ActiveCell.Offset(0, 1).Range("A1").Select中的Offset属性表示相对引用,这里表示选定当前单元格同一行右边相临的单元格,其中的Range("A1")是虚拟单元格,并不表示实际的A1单元格。这样就保证了该宏的通用性。可以每次将数据都复制到指定工作表的最后一列。当需要使用相对引用时,在录制相应操作前单击“停止录制”按钮右边的“相对引用”按钮即可。
3. 装配宏
现在已有了完成各个步骤的宏:
Import_Data:导入股票行情数据。
Copy_Data:将股票行情数据复制到个股数据工作表。
Update_Chart:更新K线图。
下面的工作是将其装配在一起。最简单的方法仍然是使用宏记录器,只是这次要录制的是运行其它宏的宏。首先单击“录制宏”按钮,键入宏的名称“Auto_Add”,单击“确定”。然后单击“运行宏”按钮,逐个运行Import_Data、Copy_Data、Update_Chart宏。最后单击“停止录制”按钮。录制的宏如下:
Sub Auto_Add( )
Application.Run “ST2.xls!Import_Data”
Application.Run “ST2.xls!Copy_Data
Application.Run “ST2.xls!Update_Chart
End Sub
实际上宏名称前面的“Application.Run “ST2.xls!”可以简化掉,而不影响宏的运行。