Excel单个单元格内容很长读取失败[已解决]
本帖最后由 heroxianf 于 2016-4-8 13:20 编辑Local $bResult = _Excel_RangeRead($oWorkbook, Default, "D953", 2)
MsgBox(0, '', $bResult)
如上图所示,EXCEL一个单元格里内容过多,是读取不到的,请问有什么办法可以解决吗?另外用.CSV格式可以用filereadtoarray()可以读取出来,拆分数据到各个TXT里的时候也有出现篡位的情况。 回复 1# heroxianf
應該 不會讀取不到吧可以 提供 範例檔案嗎?? 回复 2# kk_lee69
應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??
随便填一些都不能读取的 回复 3# heroxianf
這麼短 可以讀取呀 回复 3# heroxianf
試試看 這個語法吧
$oExcel = _ExcelBookOpen($FileName,0,True) ;打開EXCEL表
;$INFNAME=StringTrimRight($FILEarray1[$f],4)
;$INFNAME2=$BillName1
With $oExcel.ActiveSheet;worksheets("")
$ProdArray=.range("a1").currentregion.value
;$arrt=$oExcel.application.intersect(.range("a1").currentregion,.range("a1").currentregion.offset(1)).value ;第一行不讀取
;下面這段為 尋找跟替換 ;檢查 讀取到的檔案是否 有 不應該出現的字
For $n=0 To UBound($ProdArray)-1
For $i=0 To UBound($ProdArray,2)-1
$ProdArray[$n][$i]=StringReplace($ProdArray[$n][$i],"'","")
Next
Next
$ProdArray=.application.transpose($ProdArray) ;行列互換
;.parent.close(false) ;讀取完畢後 把頁面關掉的
EndWith
_ArrayDisplay($ProdArray)
_ExcelBookClose($oExcel, 0, 0)
$oExcel=0 回复 5# kk_lee69
我的是3.3.14.2版本 运行出错。 回复 6# heroxianf
把 那行拿掉
就可以 讀取到 不管有多長
然後自己再 AU3裡面 再來個行列互換不用 使用 EXCEL 函數就可以了 回复 7# kk_lee69
哪行拿掉呢?貌似我的AU3版本运行部了老的EXCELudf 回复 6# heroxianf
你試試看 這個保證 不會讀取不到
陣列方向自己在另外處理
$oExcel = _ExcelBookOpen($FileName,0,True) ;打開EXCEL表
;$INFNAME=StringTrimRight($FILEarray1[$f],4)
;$INFNAME2=$BillName1
With $oExcel.ActiveSheet;worksheets("")
$ProdArray=.range("a1").currentregion.value
;$arrt=$oExcel.application.intersect(.range("a1").currentregion,.range("a1").currentregion.offset(1)).value ;第一行不讀取
;下面這段為 尋找跟替換 ;檢查 讀取到的檔案是否 有 不應該出現的字
For $n=0 To UBound($ProdArray)-1
For $i=0 To UBound($ProdArray,2)-1
$ProdArray[$n][$i]=StringReplace($ProdArray[$n][$i],"'","")
Next
Next
;.parent.close(false) ;讀取完畢後 把頁面關掉的
EndWith
_ArrayDisplay($ProdArray)
_ExcelBookClose($oExcel, 0, 0)
$oExcel=0 回复 9# kk_lee69
谢谢, 确实解决了,这个是什么问题呢? 回复 10# heroxianf
你原本的寫法是AU3 的 EXCEL UDF 因次 這個 UDF 在設計得時候 可能沒考慮太多
因此 長度超過就會出問題
而我給你的第一個語法是 UDF打開 EXCEL後不使用 UDF 的 讀取資料函數
而是使用 EXCEL 本身的 VBA 語法 抓取資料,因此 資料都抓的到
只是 抓到的資料 行列是 顛倒的 這是 VBA 內建的 讀取方式問題,
因此我在 第一個語法的時候 又使用了 EXCEL 內建 行列互換的函數
這個 函數有個限制 單存儲格不可以超過 255字元
所以我給你的第一段語法 就是這邊出錯誤
也是因為你的問題 才發現 原來EXCEL 行列互換函數 有這個限制
因此 我發問了另外一個問題
所以最後 乾脆 不要 在EXCEL 行列互換 在AU3 用陣列 行列互換就可以排除問題 回复 11# kk_lee69
谢谢了~ 得到解決的話 就請修改 標題 已解決 原来可以这样这样考虑啊
页:
[1]