返回列表 上一主題 發帖

請問如何將存檔如表格一樣

請問如何將存檔如表格一樣如下圖一樣,謝謝
wufonna 發表於 2014-9-19 20:40
  1. Sub Trans()
  2.     Dim myRng As Range
  3.     Dim i%, j%
  4.     Dim MyTxt$, filename$
  5.     Dim aLen()
  6.    
  7.     aLen = Array(8, 16, 16, 16, 16, 16, 16)
  8.     Set myRng = Range("A1").CurrentRegion '定義要抓取的範圍
  9.    
  10.     '定義檔名為時間
  11.     filename = ThisWorkbook.Path & "\" & Format(Now(), "yyyymmddhhmmss") & ".txt"
  12.     '開啟檔案寫入,若路徑中未有該檔案會create一個
  13.     Open filename For Output As #1
  14.     '第一列不抓進來,一直取到最後一列
  15.     With myRng
  16.     For i = 1 To .Rows.Count
  17.       MyTxt = ""
  18.       For j = 1 To 7
  19.         MyTxt = MyTxt & Left(.Cells(i, j) & Space(16), aLen(j - 1) - Len(.Cells(i, j)) * -(i = 1))
  20.       Next
  21.         Print #1, MyTxt
  22.     Next
  23.     End With
  24.     Close #1
  25.     MsgBox ("存檔成功! ")
  26. End Sub
複製代碼
testtxt-a.zip (14.25 KB)

TOP

回復  luhpro
    謝謝 luhpro 大大 ,程式可執行 ^_^
  諸問 大大          MyTxt = MyTxt & Left( ...  , aLen(j - 1) - Len(.Cells(i, j)) * -(i = 1))
wufonna 發表於 2014-9-20 19:00

之所以需要多這一段是因為在 Excel VBA 中, 中文(雙位元字組 - 全形字) 在某些函數的計算上只佔一個字的寬度
Len("年度")=2
但在文字檔中與其占據相同空間的英數字(單位元字組 - 半形字) :
Len("2014") 卻是 =4
所以當顯示中文字時,
為了要使其與英文字的位置能夠對齊,
往往需要再減掉與中文字數相同的半形字空格.

而這也往往會使得使用全形字的文件在做定位處理時很不方便,
例如一個文件 :
王OO  男  工程師 台北市OO區OOOO路二段000巷00號2樓之一 (02)1234-5678
蘇OO  女               新竹市OO區OO路00號                                         (05)000-0000
在地址的中文字數不定,
若又有些欄位可能是完全空白的情形下, (這就不適合以空白來做欄位區隔)
如上方例子若想要定位後面的電話就要經過較複雜的計算處理了.

在 Mid 與 Left 等函數也是有這樣的情形,
弔詭的是 "儲存格函數" 中有群 LenB, LeftB 與 MIDB 等可以直接處理雙位元字組的字數定位處理, ( LenB("年度")=4 )
Excel VBA 這種更需要這類處理的語言(讀取文字檔之類的...),
我找了很久都找不到類似的函數可用,
也不知道其他人都是怎樣處理類似問題的.

TOP

本帖最後由 luhpro 於 2014-9-23 00:00 編輯
請問 大大
這網頁有個換行
我多加了
varVar = Replace(varVar, Chr(10), " ") '取代換行為空格
文字檔內還有1 個黑格...
wufonna 發表於 2014-9-22 18:34

你是指標題列中 年度與季別間有兩個空格嗎?
其實這個你可以用手動剪貼一下就可以發現:
1.網頁中複製該表格內容
2.貼到 Excel
3. 再複製Excel上的表格
4. 貼到記事本
用方向鍵移動游標,
你會發現年度那列中各年度間游標有時會一次跳很多格,
我判斷那是 HT (Tab按鍵) Chr(9) 字元,
你試試看用空字元取代應該就不會發生了.

TOP

        靜思自在 : 是非當教育,讚美作警惕。
返回列表 上一主題