VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

請問如何可以在匯出的excel中設定excel的公式?
前往頁面 1, 2  下一頁
 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
personmen



註冊時間: 2003-09-22
文章: 45


第 1 樓

發表發表於: 星期四 四月 15, 2004 6:02 pm    文章主題: 請問如何可以在匯出的excel中設定excel的公式? 引言回覆

請問, 有沒有辦法可以讓VFP所滙出的EXCEL檔案中, 是有公式的? 而不需要在滙出EXCEL後, 再去EXCEL中設定公式...
謝謝...
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 2 樓

發表發表於: 星期五 四月 16, 2004 2:39 am    文章主題: 引言回覆

代碼:
M_cXLSFile                = GETFILE("XLS")
M_oExcelSheet             = GETOBJECT('',"EXCEL.SHEET")
__oApplicationOfWorkSheet = M_oExcelSheet.APPLICATION
__oApplicationOfWorkSheet.WORKBOOKS.OPEN(M_cXLSFile)
* >> 填入專用公式
WITH __oApplicationOfWorkSheet.Sheets("Sheet1")
  .CELLS(4,5).Value = "=SUM(E1..E3)"  && 在 Sheet1 的 E4 儲存格填入你要的公式(這只是舉個例子,實際由你自己決定)
ENDWITH
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
IF !ISNULL(__oApplicationOfWorkSheet)
  __oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
  __oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
  __oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF
ENDIF

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ


朱育興 在 星期五 四月 16, 2004 3:39 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 3 樓

發表發表於: 星期五 四月 16, 2004 10:10 am    文章主題: 引言回覆

您好, 不好意思, 想再請問...
感謝...
引言回覆:

M_cXLSFile = GETFILE("XLS") ===> XLS 指的是該EXCEL檔案位置嗎?
M_oExcelSheet = GETOBJECT('',"EXCEL.SHEET") ===>EXCEL.SHEET 指的是檔案位置嗎?
__oApplicationOfWorkSheet = M_oExcelSheet.APPLICATION
__oApplicationOfWorkSheet.WORKBOOKS.OPEN(M_cXLSFile)
* >> 填入專用公式
WITH __oApplicationOfWorkSheet.Sheets("Sheet1")
.CELLS(5,4).Value = "=SUM(E1..E3)" && 在 Sheet1 的 E4 儲存格填入你要的公式(這只是舉個例子,實施由你自己決定) ===>若我所有E的欄位都要等於C欄+D欄的話, 該如何做呢?
ENDWITH
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
IF !ISNULL(__oApplicationOfWorkSheet)
__oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
__oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
__oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF
ENDIF
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
personmen



註冊時間: 2003-09-22
文章: 45


第 4 樓

發表發表於: 星期五 四月 16, 2004 11:27 am    文章主題: 引言回覆

您好, 不好意思, 原本您所提供之範例, 我已經測成功了, 真是感謝...
現在就是想請問, 若我所有 E 的欄位都要等於 C + D 的話, 該如何做呢?
(E2 = C2 + D2, E3 = C3 + E3, E4 = C4 + D4...以此類推)
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 5 樓

發表發表於: 星期五 四月 16, 2004 2:30 pm    文章主題: 引言回覆

代碼:
* 我不知道你要?#125;啟哪個檔案,所以使用 GETFILE() 函數由你挑;
* 若你知道要?#125;啟的檔案,那就將 M_cXLSFile = 你要?#125;啟的檔案
M_cXLSFile = GETFILE("XLS")
M_oExcelSheet = GETOBJECT('',"EXCEL.SHEET")
__oApplicationOfWorkSheet = M_oExcelSheet.APPLICATION
__oApplicationOfWorkSheet.WORKBOOKS.OPEN(M_cXLSFile)
* >> 填入專用公式
WITH __oApplicationOfWorkSheet
  WITH .Sheets("Sheet1")
    .CELLS(1,5).Value = "=C1+D1"  && 在 E1 填入公式
    .Range("E1").Copy             && 複製 E1 的公式
    .Range("E2:E18").Select       && 要複製的範圍,若你真的要 E 欄全部的話,E2:E18 改為 E:E
  ENDWITH
  .ActiveSheet.Paste              && 貼上
ENDWITH
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
IF !ISNULL(__oApplicationOfWorkSheet)
  __oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
  __oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
  __oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF
ENDIF

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ


朱育興 在 星期五 四月 16, 2004 3:40 pm 作了第 1 次修改
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 6 樓

發表發表於: 星期五 四月 16, 2004 2:59 pm    文章主題: 引言回覆

嗯, 我大致上瞭解了...

不好意思, 想再請問...
1.如何能判斷EXCEL共有幾筆資料?
2.請問以下這段程式的用意是, 可否麻煩說明一下?
IF VARTYPE(__oApplicationOfWorkSheet) = "O"
IF !ISNULL(__oApplicationOfWorkSheet)
__oApplicationOfWorkSheet.Application.DisplayAlerts = .F.
__oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile)
__oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF

再次感謝您, 解決了我的疑問...
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 7 樓

發表發表於: 星期五 四月 16, 2004 3:18 pm    文章主題: 引言回覆

1.如何能判斷EXCEL共有幾筆資料?

我不知道你在 EXCEL 中的資料是如何建立的,是由 FOXPRO 程式寫進去的呢?還是該 EXCEL 檔中就已經建立的呢?

若是 FOXPRO 程式寫進去,那你就應該知道有多少筆資料才對;若是 EXCEL 檔中就已經建立的,那你應該在 EXCEL 設一個儲存格來記錄筆數,至於如何在 EXCEL 中得知,你就得好好使用 EXCEL 自己提供的函數取把它求出

2.請問以下這段程式的用意是, 可否麻煩說明一下?
IF VARTYPE(__oApplicationOfWorkSheet) = "O" && 該物件變數是否存在
IF !ISNULL(__oApplicationOfWorkSheet) && 該物件是否已釋放(記得好像是這個意思)
__oApplicationOfWorkSheet.Application.DisplayAlerts = .F. && 關閉下一句儲存檔案時 EXCEL 會出出現詢問視窗
__oApplicationOfWorkSheet.ActiveWindow.Close(.T.,M_cXLSFile) && 儲存檔案
__oApplicationOfWorkSheet.Application.DisplayAlerts = .T.
ENDIF

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 8 樓

發表發表於: 星期五 四月 16, 2004 3:22 pm    文章主題: 引言回覆

不好意思,
在執行
.ActiveSheet.Paste && 貼上

這程式時出現這個錯誤...
OLE錯誤程式碼0X80020006:UNKNOWN NAME...

不知是哪兒出了問題呢?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 9 樓

發表發表於: 星期五 四月 16, 2004 3:32 pm    文章主題: 引言回覆

代碼:
WITH __oApplicationOfWorkSheet
  WITH .Sheets("Sheet1")
    .CELLS(1,5).Value = "=C1+D1"
    .Range("E1").Copy
    .Range("E2:E18").Select
  ENDWITH
  .ActiveSheet.Paste
ENDWITH


你確定你沒抄錯程式碼嗎?

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 10 樓

發表發表於: 星期五 四月 16, 2004 3:42 pm    文章主題: 引言回覆

朱育興 寫到:
代碼:
WITH __oApplicationOfWorkSheet
  WITH .Sheets("Sheet1")
    .CELLS(1,5).Value = "=C1+D1"
    .Range("E1").Copy
    .Range("E2:E18").Select
  ENDWITH
  .ActiveSheet.Paste  ===>請問貼上的{式一定要放在這兒嗎? 不能放在上一個迴圈中?
ENDWITH


你確定你沒抄錯程式碼嗎?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 11 樓

發表發表於: 星期五 四月 16, 2004 4:02 pm    文章主題: 引言回覆

ActiveSheet 是指目前作用中的 sheet,它不是 Sheets 下的屬性
_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 12 樓

發表發表於: 星期五 四月 16, 2004 4:09 pm    文章主題: 引言回覆

所以若我有二個以上欄位要複製格式的話, 以下的程式就要整段程式 COPY 二個以上囉?

personmen 寫到:
朱育興 寫到:
代碼:
WITH __oApplicationOfWorkSheet
  WITH .Sheets("Sheet1")
    .CELLS(1,5).Value = "=C1+D1"
    .Range("E1").Copy
    .Range("E2:E18").Select
  ENDWITH
  .ActiveSheet.Paste  ===>請問貼上的?#123;式一定要放在這兒嗎? 不能放在上一個迴圈中?
ENDWITH


你確定你沒抄錯程式碼嗎?
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
朱育興



註冊時間: 2003-08-25
文章: 654
來自: 台中市大里區

第 13 樓

發表發表於: 星期五 四月 16, 2004 4:18 pm    文章主題: 引言回覆

personmen 寫到:
所以若我有二個以上欄位要複製格式的話, 以下的程式就要整段程式 COPY 二個以上囉?


要這麼做也是可以啦!不過要看你實際上的情況而定,建議你先利用 EXCEL 的錄製巨集功能,把你要做的動作完整錄製下來供程式碼撰寫的參考。

我回答你這些的程式碼,我都先用 EXCEL 的錄製巨集後再轉為 FOXPRO,若問我如何得知兩者的關係,那就是看別人的及累積的經驗。

_________________
希望有更多人來參與
VFP wiki - 需要大家一起完成的VFP電子書與FAQ
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 MSN Messenger
personmen



註冊時間: 2003-09-22
文章: 45


第 14 樓

發表發表於: 星期五 四月 16, 2004 5:31 pm    文章主題: 引言回覆

瞭解, 謝謝~~
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
personmen



註冊時間: 2003-09-22
文章: 45


第 15 樓

發表發表於: 星期五 四月 16, 2004 6:15 pm    文章主題: 引言回覆

請問下面這段程式, 若我要再設定頁首, 邊界等功能的話, 程式是要放在哪一個區段?

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
ENDWITH


我要加入的程式...
WITH ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = &細明體,標準"投線差異check表"
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.75)
.RightMargin = Application.InchesToPoints(0.75)
.TopMargin = Application.InchesToPoints(1)
.BottomMargin = Application.InchesToPoints(1)
.HeaderMargin = Application.InchesToPoints(0.5)
.FooterMargin = Application.InchesToPoints(0.5)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperLetter
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
ENDWITH

因為我加了好幾個地方, 但都會出現這個錯誤...
OLE錯誤程式碼0X80020006:UNKNOWN NAME...

'找不到別名 ACTIVESHEET'
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
前往頁面 1, 2  下一頁
1頁(共2頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作