- loExcel.ActiveSheet..... 和 loExcel.... 皆代表對現在Excel 上擁有控制權的 Sheet 進行動作。
- 指定 Sheet 的方法有三種:
ActiveSheet 現在 Excel 上擁有控制權的 Sheet、
Sheets(Var) 和
WorkSheets(Var) 為指定 Sheet 的兩種方式,Var 可以為 Sheet 名稱或是索引值。
loExcel = CREATEOBJECT("Excel.Application")
loExcel.SheetsInNewWorkBook = liSheetQty
loExcel.WorkBooks.Add
lnSheetQty = loExcel.Sheets.Count
loExcel.Sheets(Var).NAME = SheetName
loExcel.ActiveSheet.Delete()
loExcel.Sheets(Var).Delete()
loExcel.Visible = .T.
loExcel.WorkSheets(Var).Activate
loExcel.Sheets(Var).Activate
loExcel.WorkBooks.OPEN((lcExcelPath))
loExcel.ActiveSheet.Cells(lnRows,lnColumns) = Values
loExcel.Sheets(Var).Cells(lnRows,lnColumns) = Values
loExcel.Cells(lnRows,lnColumns).Value = Values
loExcel.ActiveSheet.Rows(lnRows).FONT.SIZE = lnFontSize
loExcel.ActiveSheet.Columns(lnColumns).FONT.SIZE = lnFontSize
loExcel.ActiveSheet.Rows(lnRows).RowHeight = lnHeight
loExcel.ActiveSheet.Columns(lnColumns).ColumnWidth = lnWidth
loExcel.ActiveSheet.Range(lcRange).Select
loExcel.SELECTION.Locked = .F.
loExcel.ActiveSheet.Protect(Password)
loExcel.ActiveSheet.unProtect(Password)
loExcel.ActiveSheet.Range(lcRange).Borders.LineStyle = nLineInt
loExcel.ActiveSheet.Range(lcRange).Border(nInt).LineStyle = nLineInt
loExcel.ActiveSheet.Range(lcRange).Borders.Weight = nInt
loExcel.ActiveSheet.Cells(lnRows,lnColumns).VerticalAlignment = lnValue
loExcel.ActiveSheet.Rows(lnRows).VerticalAlignment = lnValue
loExcel.ActiveSheet.Columns(lnColumns).VerticalAlignment = lnValue
loExcel.ActiveSheet.Cells(lnRow,lnColumns).HorizontalAlignment = lnValue
loExcel.ActiveSheet.Rows(lnRows).HorizontalAlignment = lnValue
loExcel.ActiveSheet.Columns(lnColumns).HorizontalAlignment = lnValue
loExcel.ActiveSheet.Rows(lnRows).Insert
loExcel.ActiveSheet.PageSetup.PaperSize = nPrinterSetting
loExcel.ActiveSheet.PageSetup.Orientation = nPrinterSetting
loExcel.ActiveSheet.Range(lcRange).Merge
loExcel.ActiveSheet.PageSetup.TopMargin = 1 / 0.035
loExcel.ActiveSheet.PageSetup.BottomMargin = 1 / 0.035
loExcel.ActiveSheet.PageSetup.LeftMargin = 1 / 0.035
loExcel.ActiveSheet.PageSetup.RightMargin = 1 / 0.035
loExcel.ActiveSheet.PageSetup.LeftHeader = lcContent
loExcel.ActiveSheet.PageSetup.CenterHeader = lcContent
loExcel.ActiveSheet.PageSetup.RightHeader = lcContent
loExcel.ActiveSheet.PageSetup.LeftFooter = lcContent
loExcel.ActiveSheet.PageSetup.CenterFooter = lcContent
loExcel.ActiveSheet.PageSetup.RightFooter = lcContent
loExcel.ActiveSheet.Columns(lnColumns).NumberFormatlocal = Format
loExcel.ActiveSheet.Cells(lnRows,lnColumns).Formula = Formula
loExcel.SELECTION.WrapText = .T.
lcPrintTitleRange = "lnROWStart:lnROWEnd"
loExcel.ActiveSheet.RANGE(lcPrintTitleRange).SELECT
loExcel.ActiveSheet.PageSetup.PrintTitleRows = lcPrintTitleRange
loExcel.ActiveWindow.SplitColumn = lnCol
loExcel.ActiveWindow.SplitRow = lnRow
loExcel.ActiveWindow.FreezePanes = .T.
loExcel.ActiveSheet.COLUMNS(lnColumns).HIDDEN = Visible
loExcel.ActiveSheet.ROWS(lnRows).HIDDEN = Visible
loExcel.DisplayAlerts = .F.
loExcel.ActiveWorkbook.Save
loExcel.ActiveWorkbook.SaveAs("D:\Excel.XLSX")
loExcel.ActiveWorkbook.SaveAs("D:\Excel.XLS" , FileFormat)
loExcel.Quit
SELECT curData
SCAN
FOR lnCount = 1 TO FCOUNT("curData")
lcField = EVALUATE(FIELD(lnCount))
loExcel.Sheets(Var).cells(RECNO("curData"), lnCount) = lcField
ENDFOR
SELECT curData
ENDSCAN
以此為例子說明如何利用錄製巨集了解 VBA 語法:在 cell(1,1) 輸入手機號碼,並設定格式為"行動電話、呼叫器號碼"。
- 開啟錄製巨集
- 在 cell(1,1)內輸入手機號碼 0916123456,輸入完後在 cell(1,1) 內會顯示 916123456
- 儲存格格式內,數值 Tag -> 類別(特殊)-> 類型(行動電話、呼叫器號碼)
- 編輯已錄製的巨集
-- 巨集內容
Sub Macro1()
ActiveCell.FormulaR1C1 = "916123456"
Range("A1").Select
Selection.NumberFormatLocal = "[>99999999]0000-000-000;000-000-000"
Application.Goto Reference:="Macro1"
End Sub
HighLight 的 "[>99999999]0000-000-000;000-000-000" 就是行動電話、呼叫器號碼的格式。
沒有留言:
張貼留言