heroxianf 发表于 2016-4-7 16:22:47

Excel单个单元格内容很长读取失败[已解决]

本帖最后由 heroxianf 于 2016-4-8 13:20 编辑

        Local $bResult = _Excel_RangeRead($oWorkbook, Default, "D953", 2)
        MsgBox(0, '', $bResult)


如上图所示,EXCEL一个单元格里内容过多,是读取不到的,请问有什么办法可以解决吗?另外用.CSV格式可以用filereadtoarray()可以读取出来,拆分数据到各个TXT里的时候也有出现篡位的情况。

kk_lee69 发表于 2016-4-7 16:36:30

回复 1# heroxianf

應該 不會讀取不到吧可以 提供 範例檔案嗎??

heroxianf 发表于 2016-4-7 16:42:10

回复 2# kk_lee69

應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??應該 不會讀取不到吧可以 提供 範例檔案嗎??

随便填一些都不能读取的

kk_lee69 发表于 2016-4-7 16:51:40

回复 3# heroxianf

這麼短 可以讀取呀

kk_lee69 发表于 2016-4-7 16:55:06

回复 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

heroxianf 发表于 2016-4-7 23:23:27

回复 5# kk_lee69



我的是3.3.14.2版本   运行出错。

kk_lee69 发表于 2016-4-8 09:26:49

回复 6# heroxianf

把 那行拿掉

就可以 讀取到 不管有多長

然後自己再 AU3裡面 再來個行列互換不用 使用 EXCEL 函數就可以了

heroxianf 发表于 2016-4-8 09:34:28

回复 7# kk_lee69

哪行拿掉呢?貌似我的AU3版本运行部了老的EXCELudf

kk_lee69 发表于 2016-4-8 09:35:44

回复 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

heroxianf 发表于 2016-4-8 10:05:02

回复 9# kk_lee69


   谢谢, 确实解决了,这个是什么问题呢?

kk_lee69 发表于 2016-4-8 10:20:07

回复 10# heroxianf

你原本的寫法是AU3 的 EXCEL UDF 因次 這個 UDF 在設計得時候 可能沒考慮太多

因此 長度超過就會出問題

而我給你的第一個語法是 UDF打開 EXCEL後不使用 UDF 的 讀取資料函數
而是使用 EXCEL 本身的 VBA 語法 抓取資料,因此 資料都抓的到

只是 抓到的資料 行列是 顛倒的 這是 VBA 內建的 讀取方式問題,

因此我在 第一個語法的時候 又使用了 EXCEL 內建 行列互換的函數

這個 函數有個限制 單存儲格不可以超過 255字元

所以我給你的第一段語法 就是這邊出錯誤   
也是因為你的問題 才發現 原來EXCEL 行列互換函數 有這個限制
因此 我發問了另外一個問題

所以最後 乾脆 不要 在EXCEL 行列互換   在AU3 用陣列 行列互換就可以排除問題

heroxianf 发表于 2016-4-8 13:19:58

回复 11# kk_lee69


    谢谢了~

kk_lee69 发表于 2016-4-8 13:21:42

得到解決的話 就請修改 標題 已解決

bachelor88 发表于 2016-4-9 22:33:50

原来可以这样这样考虑啊
页: [1]
查看完整版本: Excel单个单元格内容很长读取失败[已解决]