

添加数据后的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:=FalseEnd 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!”可以简化掉,而不影响宏的运行。