//使用資料視窗或datastore,先取資料
Ls_Sql = "select code,name from table"
If f_createds(Ls_Sql,ldst_data) <> 1 Then//f_createds是建立datastore的函數
messagebox('提示','處理失敗,請與系統管理者聯系!)
Return
end if
//------------導出Excel------------//
Ls_FileName=F_GetTempFileName('excel')
if ls_filename='' or isnull(ls_filename) then
return
end if
if ldst_data.saveasascii(ls_filename)<>1 then
Destroy Ldst_Data;
messagebox('提示','資料導出失敗,請找管理者!')
return
end if
lo_myole = Create OleObject
ll_Res = lo_myole.ConnectToNewObject("excel.application")
lo_myole.windowstate=2
lo_myole.Workbooks.Open(ls_filename)
lo_myole.ActiveWorkbook.Save()
lo_myole.rows("1:1").Delete//删除第一條dw标題
//現在編号其實已經導出了,
方法一:導出後,先使用VBA設定文本格式,再循環指派
//為了讓第一列編碼正常顯示,先将第一列格式設定為文本,再循環指派
lo_myole.Columns("A:A").Select
lo_myole.Selection.NumberFormatLocal = "@"
for ll_i = 1 to ldst_data.rowcount()
lo_myole.Cells(ll_i,1).Value = ldst_data.object.code[ll_i]
next
方法二:導出後,使用加單引号的方法循環指派
for ll_i = 1 to ldst_data.rowcount()
lo_myole.Cells(ll_i,1).Value = " ' "+ldst_data.object.code[ll_i]
next
方法三:在取資料的sql中直接加單引号
即把第一句代碼改成:
Ls_Sql = "select ''''+code,name from table"
4個單引号?沒錯,是4個,第2個是轉義字元,取出資料是這樣的
'01010240229 名稱一
'01010240201 名稱二
弊端:資料視窗直接導入excel時,會直接顯示'01010240229,在單元格上輕按兩下後才會變成01010240229
方法四(最優方案):在取資料的sql中直接加~t
即把第一句代碼改成:
Ls_Sql = "select '~t'+code,name from table"
01010240229 名稱一
01010240201 名稱二
問題解決啦!不用循環 ,友善快捷!