ken3238
2021-01-05 20:27
采纳率: 100%
浏览 19

請教各位老師: vfp調用 excel 繁簡轉換問題,謝謝!!

操作環境: win10, vfp9.0,  excel2003, excel2010

Vfp代码,将word文檔繁转简成功,但用在Excel文檔时出错,请求高手指点,谢谢!!

*代碼如下:

clear

 set safe off 

       *设定对象

           oExcel=CreateObject('Excel.Application') &&  

           oExcel.DisplayAlerts=.t.    &&          

  * 打开对象   

           oExcel.Workbooks.Open('D:\518D\xls\Temp.xlsx') &&          

           oExcel.Worksheets("sheet1").Activate &&激活表 

           oExcel.Visible=.F.                  

             *word繁转简,简轉繁都成功

             * oWord.WordBasic.ToolsTCSCTranslate(0,0,0)  && 繁转简 正确

             * oWord.WordBasic.ToolsSCTCTranslate(0,0,0)  && 简轉繁 正確

 

           *excel 繁转简 出錯  (整份工作表繁转简)        

       oExcel.ExcelBasic.ToolsTCSCTranslate(0,0,0)  &&  此行代码出错2021-01-04  

         *简轉繁 出錯

    oExcel.ExcelBasic.ToolsSCTCTranslate(0,0,0)  &&此行代码出错2021-01-04

 

         oExcel.DisplayAlerts=.f.    && 

         * oExcel.save

          oExcel.ActiveWorkbook.Save

          oExcel.Workbooks.Close

          oexcel.quit

          RELEASE oexcel            

                

    set safe on  

   RETURN

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

29条回答 默认 最新

  • 歇歇 2021-01-05 22:25
    已采纳

    对不起,我的错

    oWord=Createobject("Word.Application")

     oWord.Documents.Add()

     nExcelRows=oExcel.ActiveSheet.UsedRange.Rows.Count
            nExcelCols=oExcel.ActiveSheet.UsedRange.Columns.Count

    for i=1 to nExcelRows

    for j=1 to nExcelCols

    LcTempValue=oExcel.cells(i,j).value

    if vartype(LcTempValue)="C"

    oWord.ActiveDocument.Range.Text=LcTempValue

    oWord.WordBasic.ToolsSCTCTranslate(0,0,0)

    oExcel.cells(i,j).value=oWord.ActiveDocument.Range.Text

    endif

    endfor

    endfor

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-05 21:31

    需要调用Word的转换方法       

     nExcelRows=oExcel.ActiveSheet.UsedRange.Rows.Count
            nExcelCols=oExcel.ActiveSheet.UsedRange.Columns.Count

    for i=1 to nExcelRows

    for j=1 to nExcelCols

    LcTempValue=oExcel.cells(i,j).value

    if vartype(LcTempValue)="C"

    oWord.Sections(1).Range.Text =LcTempValue

    oWord.WordBasic.ToolsSCTCTranslate(0,0,0)

    oExcel.cells(i,j).value=oWord.Sections(1).Range.Text

    endif

    endfor

    endfor

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:33

    謝謝,我試試看

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:47

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:47

    不行,出錯

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:47

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:48

    請幫忙再看看,可有解決辦法,謝謝!!

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:49

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 21:51

    mzvfp,好的,我去看看,謝謝!

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-05 21:57

    对不起,我的错

    oWord=Createobject("Word.Application")

     oWord.Documents.Add()

     nExcelRows=oExcel.ActiveSheet.UsedRange.Rows.Count
            nExcelCols=oExcel.ActiveSheet.UsedRange.Columns.Count

    for i=1 to nExcelRows

    for j=1 to nExcelCols

    LcTempValue=oExcel.cells(i,j).value

    if vartype(LcTempValue)="C"

    oWord.Sections(1).Range.Text =LcTempValue

    oWord.WordBasic.ToolsSCTCTranslate(0,0,0)

    oExcel.cells(i,j).value=oWord.Sections(1).Range.Text

    endif

    endfor

    endfor

     

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-05 21:57

    再试试。
     

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 22:02

    好的,謝謝

     

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 22:06

    抱歉,老師,還是會出錯

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 22:07

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 22:07

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 22:40

    我再試試,謝謝指導!

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-05 22:48

    是台湾企业?

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 23:02

    對的

     

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 23:02

    老師,您好,能用了,不過有點慢

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 23:03

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 23:03

    文檔約1000行,但轉了約2分鐘,

     

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-05 23:04

    有沒辦法,象EXCEL本身的繁簡按鈕般快捷??(有點貪心了,不好意思!!)

    评论
    解决 无用
    打赏 举报
  • bosaidongmomo 2021-01-06 08:45
    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-06 09:54

    需要的是能在VFP程序用的代碼,還是採用 歇歇老師的代碼了,

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-06 09:56

    請歇歇老師再指導一下,能否將for i, for j這二個變量反射到表單界面上,這樣可以看到繁簡轉換时的進度? 再次感謝!!

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-06 13:05

    請歇歇老師再指導一下,能否將for i, for j這二個變量反射到表單界面上,這樣可以看到繁簡轉換时的進度? 再次感謝!!

    这个可以的,但是进度条会拖慢速度。

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-06 13:16

    oWord=Createobject("Word.Application")

     oWord.Documents.Add()

     nExcelRows=oExcel.ActiveSheet.UsedRange.Rows.Count
            nExcelCols=oExcel.ActiveSheet.UsedRange.Columns.Count

    for i=1 to nExcelRows

    pas=INT(i/nExcelRows*20)
      bfb=i/nExcelRows*100
      waitstr="正在处理  "+ALLTRIM(STR(bfb,5,2))+'%'+CHR(10)+CHR(13)+CHR(10)+CHR(13)
      MY_INFO=waitstr+REPLICATE("■",pas)+REPLICATE("口",pslen-pas)
      WAIT MY_INFO WINDOW NOWAIT noclear AT SYSMETRIC(2)/32,SYSMETRIC(1)/12-12   &&居中性不太好

    for j=1 to nExcelCols

    LcTempValue=oExcel.cells(i,j).value

    if vartype(LcTempValue)="C"

    oWord.ActiveDocument.Range.Text=LcTempValue

    oWord.WordBasic.ToolsSCTCTranslate(0,0,0)

    oExcel.cells(i,j).value=oWord.ActiveDocument.Range.Text

    endif

    endfor

     

    endfor

    评论
    解决 无用
    打赏 举报
  • 歇歇 2021-01-06 13:25

    oWord=Createobject("Word.Application")

     oWord.Documents.Add()

     nExcelRows=oExcel.ActiveSheet.UsedRange.Rows.Count
            nExcelCols=oExcel.ActiveSheet.UsedRange.Columns.Count

    for i=1 to nExcelRows

    pas=INT(i/nExcelRows*20)
      bfb=i/nExcelRows*100
      waitstr="正在处理  "+ALLTRIM(STR(bfb,5,2))+'%'+CHR(10)+CHR(13)+CHR(10)+CHR(13)
      MY_INFO=waitstr+REPLICATE("■",pas)+REPLICATE("口",20-pas)
      WAIT MY_INFO WINDOW NOWAIT noclear AT SYSMETRIC(2)/32,SYSMETRIC(1)/12-12   &&居中性不太好

    for j=1 to nExcelCols

    LcTempValue=oExcel.cells(i,j).value

    if vartype(LcTempValue)="C"

    oWord.ActiveDocument.Range.Text=LcTempValue

    oWord.WordBasic.ToolsSCTCTranslate(0,0,0)

    oExcel.cells(i,j).value=oWord.ActiveDocument.Range.Text

    endif

    endfor

     

    endfor

    评论
    解决 无用
    打赏 举报
  • ken3238 2021-01-06 14:04

    感謝歇歇老師指導!!

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题