青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

VC操作Excel時SaveAs另存為時選擇保存時警告處理

如何自動執行將 Excel 工作表保存為 HTML 文件中使用 Visual c + +

http://support.microsoft.com/kb/199691/zh-cn





VC操作Excel,當用SaveAs保存Excel時,如果待保存路徑下已經存在該Excel,則會彈出一個對話框提示你當前路徑下已經存在該Excel,是否替換,下面有三個按鈕:“是”、“否”、“取消”。如果選擇了“取消”則會彈出一個錯誤警告對話框。

可以按照如下方法解決這個問題:在SaveAs之前添加代碼: _Application ExcelApp; ExcelApp.SetAlertBeforeOverwriting(FALSE); ExcelApp.SetDisplayAlerts(FALSE);  

在Office2003版Office所生成的Excel.cpp文件中,類_Workbook的SaveAs函數,其函數原型如下:     void   SaveAs(const   VARIANT&   Filename,       const   VARIANT&   FileFormat,       const   VARIANT&   Password,       const   VARIANT&   WriteResPassword,       const   VARIANT&   ReadOnlyRecommended,       const   VARIANT&   CreateBackup,       long   AccessMode,       const   VARIANT&   ConflictResolution,       const   VARIANT&   AddToMru,       const   VARIANT&   TextCodepage,       const   VARIANT&   TextVisualLayout,       const   VARIANT&   Local);

參數含義參考如下:   Question:       Nothing   like   trying   to   learn/teach   yourself   something   new   to   make   you   humble.   Winbatch   99p,   Excel   97.       I'm   loading   a   tab   delimited   file   {M:\somedir\myfile.txt}   into   Excel   using   OLE   to   manipulate   it   some   &   want   to   save   it   as   an   Excel   .xls   file   {M:\somedir\myfile.txt}.           I   can   get   the   file   to   save   under   the   new   name,   i.e.   with   the   .xls   extension   but   it's   still   in   tab   delimited   format,   NOT   Excel's   native   file   format.   The   following   is   from   a   macro   I   recorded   while   doing   the   action   I   want   to   automate:   ActiveWorkbook.SaveAs   FileName:="M:\TMI_Data\Processed\FEB00.xls",   FileFormat:=xlNormal,   Password:="",   WriteResPassword:="",   ReadOnlyRecommended:=False,   CreateBackup:=False           I   can   get   the   following   code   to   save   the   file   and   add   the   filename   to   the   MRU   list.           fileXL   ="M:\TMI_Data\Processed\FEB00.xls"         Awkbk=ObjXL.ActiveWorkbook       savefile=Awkbk.SaveAs   (fileXL)   ;   this   works           OR       savefile=Awkbk.SaveAs   (   fileXL,   ,   ,   ,   ,   ,@True   )   ;   this   works   the   @True   adds   the   file   to   the   MRU   list.         But,   whenever   I   try   to   insert   something   in   the   position   that   I   think   the   fileformat   stuff   is   supposed   to   go   I   get   1261   OLE   exception   errors   or   3250   OLE   Object   error   :   Problem   occurred   formatting   parameters.   I'm   wondering   if   it's   a   Named   parameter   ?   If   I'm   understanding   the   docs   correctly   (big   IF)   a   named   parameter   would   go   after   all   the   positional   parameters   ?   T/F   ?       I've   tried   a   lot   of   permutations   &   combinations   &   haven't   stumbled   up   on   something   that'll   work   yet.           How   does   one   differentiate   between   /tell   one   from   the   other   on   Named   vice   positional   parameters   ?   I've   looked   in   the   VBA   help   &   haven't   stumbled   onto   anything.           Answer:       Sounds   like   you   almost   have   it.   Positional   parameters   first,   then   the   ::   then   the   parameter=value   pairs   for   the   named   parameters.       Question   (cont'd):       I'm   just   not   grasping   something   here.       I've   tried   the   line   :           savefile=Awkbk.SaveAs   (   fileXL,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ::FileFormat   =   "xlNormal")           with   0   to   10   commas   for   "positional   parameters"   between   the   "fileXL"   &   the   "::".       With   0   or   1   comma   I   get   1261   OLE   exception   Error   &   the   following   entry   from   wwwbatch.ini           [OLE   Exception]     Microsoft   Excel=Unable   to   get   the   SaveAs   property   of   the   Workbook   class         With   2   to   10   commas   I   get   NO   ERRORS,   BUT   while   it   saves   with   an   .xls   extension   it   is   still   Tab   delimited.       How   can   you   tell   if   a   parameter   is   a   "Named   Parameter"   ?           The   VBA   docs   make   the   stuff   all   look   like   "Positional   parameters"           Answer:       Maybe   there   are   three   required   parameters?           Maybe   xlNormal   is   not   a   tring   but   a   constant   and   we   have   to   figure   out   what   number   it   is?           Maybe   cut   and   paste   the   SaveAs   documentation   here   and   we   can   stare   at   it.           Bit   of   an   OLE   tip   that   I   found   a   bit   by   accident.       If   you   want   to   know   whether   something   is   a   string   or   a   constant,   do   it   in   VBA   -   in   this   case,   something   like           var=xlNormal         If   it   bombs   out,   it's   a   string.   If   it   doesn't,   it'll   return   a   value   for   you   to   plug   into   your   scripts.       Here's   the   docs   for   the   "SaveAs   Method"   clipped   direct   from   the   VBA   help   :   Saves   changes   to   the   sheet   (Syntax   1)   or   workbook   (Syntax   2)   in   a   different   file.       Syntax   1       expression.SaveAs(Filename,   FileFormat,   Password,   WriteResPassword,   ReadOnlyRecommended,   CreateBackup,   AddToMru,   TextCodePage,   TextVisualLayout)         Syntax   2     expression.SaveAs(Filename,   FileFormat,   Password,   WriteResPassword,   ReadOnlyRecommended,   CreateBackup,   AccessMode,   ConflictResolution,   AddToMru,   TextCodePage,   TextVisualLayout)         expression   Required.   An   expression   that   returns   a   Chart   or   Worksheet   object   (Syntax   1)   or   a   Workbook   object   (Syntax   2).       Filename   Optional   Variant.   A   string   that   indicates   the   name   of   the   file   to   be   saved.   You   can   include   a   full   path;   if   you   don't,   Microsoft   Excel   saves   the   file   in   the   current   folder.       FileFormat   Optional   Variant.   The   file   format   to   use   when   you   save   the   file.   For   a   list   of   valid   choices,   see   the   FileFormat   property.       Password   Optional   Variant.   A   case-sensitive   string   (no   more   than   15   characters)   that   indicates   the   protection   password   to   be   given   to   the   file.       WriteResPassword   Optional   Variant.   A   string   that   indicates   the   write-reservation   password   for   this   file.   If   a   file   is   saved   with   the   password   and   the   password   isn't   supplied   when   the   file   is   opened,   the   file   is   opened   as   read-only.       ReadOnlyRecommended   Optional   Variant.   True   to   display   a   message   when   the   file   is   opened,   recommending   that   the   file   be   opened   as   read-only.       CreateBackup   Optional   Variant.   True   to   create   a   backup   file.       AccessMode   Optional   Variant.   The   workbook   access   mode.   Can   be   one   of   the   following   XlSaveAsAccessMode   constants:   xlShared   (shared   list),   xlExclusive   (exclusive   mode),   or   xlNoChange   (don't   change   the   access   mode).   If   this   argument   is   omitted,   the   access   mode   isn't   changed.   This   argument   is   ignored   if   you   save   a   shared   list   without   changing   the   file   name.   To   change   the   access   mode,   use   the   ExclusiveAccess   method.       ConflictResolution   Optional   Variant.   Specifies   the   way   change   conflicts   are   resolved   if   the   workbook   is   a   shared   list.   Can   be   one   of   the   following   XlSaveConflictResolution   constants:   xlUserResolution   (display   the   conflict-resolution   dialog   box),   xlLocalSessionChanges   (automatically   accept   the   local   user's   changes),   or   xlOtherSessionChanges   (accept   other   changes   instead   of   the   local   user's   changes).   If   this   argument   is   omitted,   the   conflict-resolution   dialog   box   is   displayed.       AddToMru   Optional   Variant.   True   to   add   this   workbook   to   the   list   of   recently   used   files.   The   default   value   is   False.       TextCodePage   Optional   Variant.   Not   used   in   U.S.   English   Microsoft   Excel.       TextVisualLayout   Optional   Variant.   Not   used   in   U.S.   English   Microsoft   Excel.           Resolution:       GREAT   Tip   --   I   inserted   your   line   into   the   macro   &   then   stepped   thru   it.   It   returned   a   value   of   -4143.   I   plugged   it   into   the   command   like   so:       savefile=Awkbk.SaveAs   (   fileXL,   -4143   ,   ,   ,   ,   ,@True   )         and   SHAZAM   it   works   !   It   would   have   been   A   WHILE   before   I'd   have   stumbled   on   to   that.   Thanks   Again.

參考鏈接: http://topic.csdn.net/t/20050121/15/3743958.html http://topic.csdn.net/t/20050324/11/3876932.html




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
本人參考網上做法,利用模板實現了VC對EXCEL的操作,但是存在以下問題:

  1.第一次運行程序,點擊保存時沒問題,當第二次運行程序時,會彈出對話框,提示已經存在文件,是否替換(是、否、取消),當點擊“否”的時候會彈出警告對話框,程序中斷;
  2.程序運行后,第一次點擊保存時,不會出錯,接著再次點擊保存時,就會出現警告:無法找到模板......;即程序運行后不能實現多次保存。
  3.程序在關閉后,為何在任務管理器的進程里并沒有結束,即不能實現程序在后臺也關閉。
  以下是源代碼,有勞哪位大俠解惑!不勝感激!
  
  void CTEST::OnConnect()  
{
 // TODO: Add your control notification handler code here
 _Application _app;
  _Workbook _workBook;
 _Worksheet _workSheet;
 Worksheets workSheets;
 Workbooks workBooks;
 Range range;
  _Application ExcelApp;  
 ExcelApp.SetAlertBeforeOverwriting(FALSE);  
 ExcelApp.SetDisplayAlerts(FALSE);   
// LPDISPATCH lpDisp;
 char path[MAX_PATH];
 //VARIANT _variant_t;
 if (CoInitialize(NULL) != 0)
 {
  AfxMessageBox("初始化COM支持庫失敗!");
  exit(1);
 }  
  if(!_app.CreateDispatch("Excel.Application", NULL))
 {
  MessageBox("創建Excel服務失敗!", "信息提示", MB_OK);
  return ;
 }
 //利用模板建立新文檔
 _app.SetUserControl(true);
  //_app.SetVisible(true);
 CFileDialog fileDlg(false);
 fileDlg.m_ofn.lpstrFilter="Text Files(*.xls)\0ALL Files(*.*)\0*.*\0\0";
 fileDlg.m_ofn.lpstrDefExt="xls";
 GetCurrentDirectory(MAX_PATH,path);
 CString strPath=path;
 CString Path,Name;
 strPath+="\\模板";
  workBooks=_app.GetWorkbooks();
 _workBook=workBooks.Add(_variant_t(strPath));
  workSheets=_workBook.GetWorksheets();
 _workSheet=workSheets.GetItem(COleVariant((short)1));
 range=_workSheet.GetCells();
 range.SetItem(_variant_t((long)1), _variant_t((long)3), _variant_t("寫入數據了"));
 range.SetItem(_variant_t((long)2), _variant_t((long)3), _variant_t("寫入數據了"));
 range.SetItem(_variant_t((long)3), _variant_t((long)3), _variant_t("寫入數據了"));
 range.SetItem(_variant_t((long)4), _variant_t((long)3), _variant_t("寫入數據了"));  
 if(IDOK==fileDlg.DoModal())//這里實現“另存為”對話框
 {
  Path=fileDlg.GetPathName();
 Name=fileDlg.GetFileName();
 //保存數據   
 _workSheet.SaveAs(Path,vtMissing,vtMissing,vtMissing,vtMissing,
  vtMissing,vtMissing,vtMissing,vtMissing,vtMissing);
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 }  
 range.ReleaseDispatch();
 _workSheet.ReleaseDispatch();
 workSheets.ReleaseDispatch();
 _workBook.ReleaseDispatch();
 workSheets.ReleaseDispatch();
 _app.ReleaseDispatch();
  _workBook.Close(vtMissing,COleVariant(Path),vtMissing);
 workBooks.Close();
 _app.Quit();
 CoUninitialize();
}


以上幾個問題已經解決,倒騰了一晚上。

(1)將char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
 CString strPath=path;定義成全局變量,   

(2)workBook.Close(vtMissing,COleVariant(Path),vtMissing);  

  改成_ COleVariant aver((long)DISP_E_PARAMNOTFOUND, VT_ERROR); workBook.Close(aver,COleVariant(Path),aver);

這樣的話問題就解決了。




posted on 2010-10-15 10:16 wrh 閱讀(6672) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2010年10月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

統計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            玖玖在线精品| 久久久久久久波多野高潮日日| 国产精品毛片va一区二区三区| 99国产精品久久久久久久成人热| 免费在线成人av| 裸体女人亚洲精品一区| 激情一区二区三区| 免费在线播放第一区高清av| 久久一区精品| 亚洲精品日韩欧美| 99国产欧美久久久精品| 亚洲视频在线二区| 国产精品有限公司| 美脚丝袜一区二区三区在线观看| 久久一区二区精品| 99re6这里只有精品| 一本大道久久a久久综合婷婷 | 久久综合网hezyo| 久久在线精品| 欧美岛国激情| 亚洲视频一二区| 性亚洲最疯狂xxxx高清| 在线精品一区二区| 日韩亚洲欧美高清| 国产农村妇女毛片精品久久莱园子 | 欧美在线观看www| 亚洲国产你懂的| 99精品国产在热久久婷婷| 在线视频中文亚洲| 一区二区在线视频| 99国产精品| 韩国三级电影久久久久久| 亚洲国产美女| 国产伦精品一区| 亚洲国产精品久久久久婷婷老年| 欧美体内谢she精2性欧美| 久久亚洲一区二区| 欧美日韩一二区| 蜜桃久久精品一区二区| 国产精品videosex极品| 你懂的视频欧美| 国产精品日本精品| 亚洲国产精品va在线看黑人| 国产女人精品视频| av不卡免费看| 最新高清无码专区| 欧美一区成人| 亚洲永久免费视频| 欧美精品在线一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美日韩在线观看一区二区| 亚洲福利视频三区| 在线观看成人一级片| 午夜精品久久久久久久99黑人| 99亚洲一区二区| 免费亚洲一区二区| 久久亚洲午夜电影| 国产一区二区三区观看| 亚洲香蕉网站| 亚洲视频在线一区| 欧美日本亚洲| 亚洲大胆女人| 9i看片成人免费高清| 亚洲精品国产精品国自产观看浪潮| 午夜精品美女久久久久av福利| 亚洲一区二区视频在线| 欧美精品18| 亚洲三级国产| 欧美暴力喷水在线| 欧美国产激情| 亚洲国产婷婷香蕉久久久久久99| 久久精品99无色码中文字幕| 国产精品午夜电影| 亚洲综合色丁香婷婷六月图片| 一区二区三区四区国产精品| 欧美精品日韩www.p站| 亚洲国产精品va在看黑人| 亚洲精品国产精品国自产在线| 美女视频一区免费观看| 亚洲第一精品电影| 亚洲精品久久久久久久久| 欧美激情精品久久久久久黑人| 亚洲国产精品久久91精品| 欧美aa在线视频| 亚洲欧洲美洲综合色网| 亚洲午夜日本在线观看| 国产精品久久久久久久7电影| 亚洲性人人天天夜夜摸| 久久久久亚洲综合| 在线精品观看| 欧美精品在线播放| 亚洲一区免费网站| 国产亚洲欧洲| 葵司免费一区二区三区四区五区| 欧美国产综合一区二区| 在线亚洲精品| 国产一区三区三区| 久久综合久久综合九色| 99精品免费| 久久久噜噜噜久久| 亚洲人成人一区二区三区| 欧美日韩亚洲综合在线| 久久国产日韩欧美| 亚洲日本免费电影| 久久精品99久久香蕉国产色戒| 在线播放一区| 国产精品国产三级欧美二区 | 久久久久久尹人网香蕉| 亚洲精品一区二区网址| 国产精品国产一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 一本综合久久| 免费视频一区| 欧美一区二区女人| 一本色道久久88综合日韩精品| 国产精品一区二区久久精品| 久久夜色精品国产| 午夜精品区一区二区三| 亚洲精品裸体| 欧美大胆a视频| 久久av老司机精品网站导航| 亚洲免费高清| 在线观看亚洲a| 国产欧美日韩综合| 欧美美女视频| 美女主播精品视频一二三四| 亚洲自拍啪啪| 一本久久a久久免费精品不卡| 欧美大片在线看| 久久久999精品| 亚洲一区欧美一区| 99在线精品视频| 最新日韩在线视频| 在线观看一区视频| 狠狠色丁香婷婷综合影院| 国产精品久久久久高潮| 欧美日韩一区二区在线播放| 欧美成人dvd在线视频| 久久久之久亚州精品露出| 性色av香蕉一区二区| 午夜日韩电影| 亚洲欧美日韩精品在线| 国产精品99久久久久久www| 亚洲看片免费| 亚洲精品一区二区三区蜜桃久| 亚洲国产成人av| 在线观看视频免费一区二区三区| 国产亚洲毛片在线| 亚洲欧美成人一区二区三区| 亚洲天堂免费观看| 夜夜嗨av一区二区三区网站四季av | 激情五月婷婷综合| 黑人巨大精品欧美一区二区小视频| 国产精品你懂的| 国产精品日韩一区| 国产日韩精品综合网站| 国产日韩一级二级三级| 国产日本欧美一区二区三区| 国产午夜精品理论片a级大结局| 国产精品一区二区三区四区五区 | 欧美视频在线观看免费网址| 欧美丝袜一区二区三区| 国产精品第一区| 国产三级欧美三级| 国内精品嫩模av私拍在线观看| 国精品一区二区三区| 亚洲成人在线网站| 日韩小视频在线观看| 亚洲深夜福利网站| 欧美在线视频免费| 免费不卡在线观看av| 亚洲激情综合| 亚洲私人影院在线观看| 久久精品二区亚洲w码| 欧美成人精品在线播放| 欧美日韩国产大片| 国产欧美精品日韩精品| 伊人久久亚洲热| 亚洲免费黄色| 欧美主播一区二区三区美女 久久精品人 | 国产精品嫩草影院av蜜臀| 精品69视频一区二区三区| 日韩视频精品在线| 久久国产精品一区二区三区| 蜜臀av一级做a爰片久久| 亚洲免费成人| 久久精品国产一区二区三| 欧美美女日韩| 在线成人激情黄色| 亚洲视频每日更新| 久久综合九色99| 在线亚洲一区观看| 欧美成人免费在线视频| 国产精品久久久久久影视| 亚洲国产中文字幕在线观看| 欧美在线一区二区三区| 亚洲理伦在线| 蜜桃av噜噜一区| 国内视频精品| 先锋影音网一区二区|