返回列表 上一主題 發帖

[發問]請問輸出成.TXT檔時可以指定在TXT檔中的位置嗎?

[發問]請問輸出成.TXT檔時可以指定在TXT檔中的位置嗎?

請問格為大大:
EXCEL輸出成.TXT檔時,可以指定每一欄的資料開頭從哪一個位置開始嗎?

因為輸出報表需求,所有資料列中,每一欄的資料開頭的位置必須一致
因資料長短不一,又夾雜中、英文與數字
所以不管我用Len、LenB去算同一蘭的最大長度,其餘補空白的方式皆無法圓滿
所以想請問各位大大能否直接指定起始位置?
或還有其他解決方式?

感恩
ASUS

[版主管理留言]
  • Hsieh(2011-1-18 13:37): 請上傳你的範例說明

回復 2# hugh0620
hugh0620大大您好
感謝您的熱心協助
其實讓我傷腦筋的是中英文混雜
因為全形、半形計算長度並不相同

再次感謝您
ASUS

TOP

totxt.rar (15.17 KB)
上傳我的例子
內含標準輸出的TXT
有勞各位費心協助
感恩再感恩
ASUS

TOP

回復 4# hugh0620
"VBA向前衝"大大感謝您
我也會再好好研究您的程式碼的
謝謝
ASUS

TOP

回復 8# Hsieh
Hsieh大大您好:
您的程式碼真是神乎其技阿
感恩

程式碼中許多事並不明白,還請指教
1.For Each A In [A1:D1]
  ad = Range(A, Cells(Cells.Rows.Count, A.Column).End(xlUp)).Address
  ad不是A1:D11嗎?為何每一次移動一欄而不是一個儲存格
2.Ar(s) = Evaluate("MAX(LENb(" & ad & "))")
   感覺上像EXCEL中陣列的用法,但實在掌握不住竅門所在,能解釋一下這個用法嗎?
3.Evaluate("LenB(""" & test & """)") 的用法也看不懂
  我把它改成 LenB( test) 後逐行執行時還OK,但最後似乎變成無線迴圈跳不出來
  Evaluate()已大大的用法似乎代表函數是嗎?但說明中只有它是"方法"的用法
4.我用lenb()在程式中得到的第2欄最大值為26,為何大大能得正確的22

是我程度太差了,這麼多看不懂的地方
還請大大多加提點
感謝再感謝
ASUS

TOP

本帖最後由 asus103 於 2011-1-19 16:52 編輯

回復 11# Hsieh
感謝Hsieh大大的解說
我可以繼續請教嗎?

1.For Each A In [A1:D1]
  ad = Range(A, Cells(Cells.Rows.Count, A.Column).End(xlUp)).Address
  ad不是A1:D11嗎?為何每一次移動一欄而不是一個儲存格
ans:我使用第一列作迴圈,所以ad字串是傳回該列資料範圍的位址
不好意思,我還是不懂是如何告訴VBA是列作迴圈的
2.Ar(s) = Evaluate("MAX(LENb(" & ad & "))")
上式之所以是陣列公式是因為" & ad & "還是 Evaluate
換言之,若要在VBA中使用陣列公式要注意甚麼
如果說:
陣列公式中的{}用Evaluate()取代,EXCEL的函數所需引數放入字串中並用" &     & "來帶入
這樣對嗎?

3.Evaluate的用法我還須多加琢磨,只是
"使用Evaluate方法中等同是工作表函數運算"為何不是使用application.---
其實我也試過用application.LenB()只是編譯階段就出錯了


不好意思,繼續找您麻煩
如果有其他地方有Evaluate的用法或是VBA中使用陣列公式的使用說明
煩請告知,我會再多加努力的
ASUS

TOP

回復 13# Hsieh
感謝Hsieh大大
我大概有七、八成懂了
我會試著用這些概念來寫一個函數,已徹底了解其用法
感謝您
這真是個豐收的一天
ASUS

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題