|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 16 樓
|
發表於: 星期六 四月 17, 2004 1:12 am 文章主題: |
|
|
把相關檔案傳上來吧,你有很多地方的寫法有問題,等你檔案傳上來後,我會將相關的使用方式寫在檔案中給你參考,否則會被你問個沒完沒了。 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
|
personmen
註冊時間: 2003-09-22 文章: 45
第 17 樓
|
發表於: 星期日 四月 18, 2004 12:13 pm 文章主題: |
|
|
真可勢...
^^|||
***將DBF檔轉存成EXCEL檔 93.04.14 BY PERSON MEN
SELECT MOD_CHK
COPY TO 'C:\RAW_RPT\MOD_CHK.XLS' TYPE XL5
***載入EXCEL檔案 93.04.16 BY PERSON MEN
M_cXLSFile = 'C:\RAW_RPT\MOD_CHK.XLS'
M_oExcelSheet = GETOBJECT('',"EXCEL.SHEET")
__oApplicationOfWorkSheet = M_oExcelSheet.APPLICATION
__oApplicationOfWorkSheet.WORKBOOKS.OPEN(M_cXLSFile)
***填入EXCEL公式 93.04.16 BY PERSON MEN
WITH __oApplicationOfWorkSheet
***DIFF_QTY
WITH .Sheets("MOD_CHK")
***填入 DIFF_QTY 公式
.CELLS(2,11).Value = "=J2-G2"
***複製上述公式
.Range("K2").Copy
***選擇所要帶入公之資料
.Range("K3:K" + LTRIM(STR(RECCOUNT() + 1))).Select
ENDWITH
***貼上
.ActiveSheet.Paste
***STAY_QTY
WITH .Sheets("MOD_CHK")
***填入 STAY_QTY 公式
.CELLS(2,12).Value = "=K2/H2*100"
***複製上述公式
.Range("L2").Copy
***選擇所要帶入公之資料
.Range("L3:L" + LTRIM(STR(RECCOUNT() + 1))).Select
ENDWITH
***貼上
.ActiveSheet.Paste
***全選
.Cells.Select
***調整最適欄寬
.Cells.EntireColumn.AutoFit
***選擇A1儲存格以取消全選範圍
.Range("A1").Select
.ActiveSheet.PageSetup.PrintTitleRows = ""
.ActiveSheet.PageSetup.PrintTitleColumns = ""
.ActiveSheet.PageSetup.PrintArea = ""
.ActiveSheet.PageSetup.LeftHeader = ""
.ActiveSheet.PageSetup.CenterHeader = "表"
.ActiveSheet.PageSetup.RightHeader = ""
.ActiveSheet.PageSetup.LeftFooter = ""
.ActiveSheet.PageSetup.CenterFooter = ""
.ActiveSheet.PageSetup.RightFooter = ""
.ActiveSheet.PageSetup.LeftMargin = Application.InchesToPoints(0.393700787401575)
.ActiveSheet.PageSetup.RightMargin = Application.InchesToPoints(0.393700787401575)
.ActiveSheet.PageSetup.TopMargin = Application.InchesToPoints(0.393700787401575)
.ActiveSheet.PageSetup.BottomMargin = Application.InchesToPoints(0.393700787401575)
.ActiveSheet.PageSetup.HeaderMargin = Application.InchesToPoints(0.393700787401575)
.ActiveSheet.PageSetup.FooterMargin = Application.InchesToPoints(0.393700787401575)
WAIT WINDOW 'footermargin'
.ActiveSheet.PageSetup.PrintHeadings = False
.ActiveSheet.PageSetup.PrintGridlines = False
.ActiveSheet.PageSetup.PrintComments = xlPrintNoComments
.ActiveSheet.PageSetup.PrintQuality = 600
.ActiveSheet.PageSetup.CenterHorizontally = False
.ActiveSheet.PageSetup.CenterVertically = False
.ActiveSheet.PageSetup.Orientation = xlPortrait
.ActiveSheet.PageSetup.Draft = False
.ActiveSheet.PageSetup.PaperSize = xlPaperA4
.ActiveSheet.PageSetup.FirstPageNumber = xlAutomatic
.ActiveSheet.PageSetup.Order = xlDownThenOver
.ActiveSheet.PageSetup.BlackAndWhite = False
.ActiveSheet.PageSetup.Zoom = False
.ActiveSheet.PageSetup.FitToPagesWide = 1
.ActiveSheet.PageSetup.FitToPagesTall = 1
ENDWITH
***判斷該物件變數是否存在
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
***判斷該物是否存在
IF !ISNULL(__oApplicationOfWorkSheet)
***關閉下一句儲存檔案時 EXCEL 會出出現詢問視窗
__oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
***儲存檔案
__oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
***恢復
__oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF
ENDIF
***開啟EXCEL檔案
L_EXCEL = CreateObject('Excel.Application')
L_EXCEL.WorkBooks.Open('C:\RAW_RPT\MOD_CHK.XLS',0)
L_EXCEL.VISIBLE=.T. |
|
回頂端 |
|
|
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 18 樓
|
發表於: 星期一 四月 19, 2004 2:14 am 文章主題: |
|
|
代碼: | ***將DBF檔轉存成EXCEL檔 93.04.14 BY PERSON MEN
SELECT MOD_CHK
COPY TO 'C:\RAW_RPT\MOD_CHK.XLS' TYPE XL5
***載入EXCEL檔案 93.04.16 BY PERSON MEN
M_cXLSFile = 'C:\RAW_RPT\MOD_CHK.XLS'
M_oExcelSheet = GETOBJECT('',"EXCEL.SHEET")
__oApplicationOfWorkSheet = M_oExcelSheet.APPLICATION
__oApplicationOfWorkSheet.WORKBOOKS.OPEN(M_cXLSFile)
***填入EXCEL公式 93.04.16 BY PERSON MEN
WITH __oApplicationOfWorkSheet
***DIFF_QTY
WITH .Sheets("MOD_CHK")
***填入 DIFF_QTY 公式
.CELLS(2,11).Value = "=J2-G2"
***複製上述公式
.Range("K2").Copy
***選擇所要帶入公之資料
.Range("K3:K"+LTRIM(STR(RECCOUNT()+1))).Select
ENDWITH
***貼上
.ActiveSheet.Paste
***STAY_QTY
WITH .Sheets("MOD_CHK")
***填入 STAY_QTY 公式
.CELLS(2,12).Value = "=K2/H2*100"
***複製上述公式
.Range("L2").Copy
***選擇所要帶入公之資料
.Range("L3:L" + LTRIM(STR(RECCOUNT() + 1))).Select
ENDWITH
***貼上
.ActiveSheet.Paste
***全選
.Cells.Select
***調整最適欄寬
.Cells.EntireColumn.AutoFit
***選擇A1儲存格以取消全選範圍
.Range("A1").Select
WITH .ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
.PrintArea = ""
.LeftHeader = ""
.CenterHeader = "表"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.RightMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.TopMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.BottomMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.HeaderMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.FooterMargin = __oApplicationOfWorkSheet.InchesToPoints(0.393700787401575)
.PrintHeadings = .F.
.PrintGridlines = .F.
.PrintComments = -4142
.PrintQuality = 600
.CenterHorizontally = .F.
.CenterVertically = .F.
.Orientation = 1
.Draft = .F.
.PaperSize = 9
.FirstPageNumber = -4150
.Order = 1
.BlackAndWhite = .F.
.Zoom = .F.
.FitToPagesWide = 1
.FitToPagesTall = 1
ENDWITH
ENDWITH
***判斷該物件變數是否存在
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
***判斷該物是否存在
IF !ISNULL(__oApplicationOfWorkSheet)
***關閉下一句儲存檔案時 EXCEL 會出出?#123;詢問視窗
__oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
***儲存檔案
__oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
***恢復
__oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF
ENDIF
***?#125;啟EXCEL檔案
L_EXCEL = CreateObject('Excel.Application')
L_EXCEL.WorkBooks.Open('C:\RAW_RPT\MOD_CHK.XLS',0)
L_EXCEL.VISIBLE=.T. |
_________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
朱育興 在 星期一 四月 19, 2004 1:47 pm 作了第 1 次修改 |
|
回頂端 |
|
|
personmen
註冊時間: 2003-09-22 文章: 45
第 19 樓
|
發表於: 星期一 四月 19, 2004 9:23 am 文章主題: |
|
|
不好意思, 再多請教一個問題...
若我要設定字體(字型, 大小...)的話, 語法是如何呢?
因為我從巨集那COPY出來的東西, VFP沒法直接用...
感謝~ |
|
回頂端 |
|
|
朱育興
註冊時間: 2003-08-25 文章: 661 來自: 台中市大里區
第 20 樓
|
發表於: 星期一 四月 19, 2004 9:29 am 文章主題: |
|
|
我本來在上面改寫的代碼之下要寫下說明,但當時本論壇當掉,來不及把說明貼上,現在把說明貼上,希望你看得懂!
你在 EXCEL 中錄製的巨集,其 VBA 的程式碼不能亂套用到 FoxPro 中,在 VBA 中的 FALSE -> VFP 中的 .F.,其它在 VBA 中以 xl 開頭的,它是 VBA 的常數變數,它們在 VFP 中當然是不存在的,你要利用 VBA 的「即時運算」視窗,在該視窗中輸入程式碼來觀察這些常數變數的實際值到底是多少。
例如:(下列都是在「即時運算」視窗中下指令的)
1. 輸入
Worksheets(1).PageSetup.PrintComments = xlPrintNoComments
後按 Enter
2.接著輸入
? Worksheets(1).PageSetup.PrintComments
後按 Enter,此時在 ? Worksheets(1).PageSetup.PrintComments 的下一行出現 -4142。這樣我們就知道 xlPrintNoComments 這個常數變數的實際值為 -4142。
其他的就以此類推...
最後 APPLICATION.xxx 系列不要亂用,物件之間的上下層關係不要搞亂了。 _________________ 希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ |
|
回頂端 |
|
|
personmen
註冊時間: 2003-09-22 文章: 45
第 21 樓
|
發表於: 星期一 四月 19, 2004 12:13 pm 文章主題: |
|
|
嗯, 瞭解了~
感謝您~ |
|
回頂端 |
|
|
goto-dream
註冊時間: 2004-05-11 文章: 909
第 22 樓
|
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|