作者aup65797 (有緣人)
看板Office
標題[問題] VBA 超過65535放到Sheet2
時間Wed Feb 15 20:23:42 2017
(若是和其他不同軟體互動之問題 請記得一併填寫)
軟體:Excel
版本:Office 2010
如何改寫為當讀取超過65535時 , 寫到Sheet2 , 3 , 4.............
以下是程式碼
Sheets("Sheet1").Select
'-----------------------------------------------------
Application.ScreenUpdating = False
Do
If xChk = 0 Then
xFile = Dir(ThisWorkbook.Path & "\*.csv")
If xFile = "" Then MsgBox "※找不到 CSV 檔案! ", 0 + 16: Exit Sub
xChk = 1
Else
xFile = Dir
If xFile = "" Then Exit Do
End If
'----------------------------------------------
uFile = ThisWorkbook.Path & "\" & xFile
Set uHead = Range("A65536").End(xlUp)
uHead.Value = xFile
Set uHead = uHead(2, 1)
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & uFile, Destination:=uHead)
.AdjustColumnWidth = False
.TextFileOtherDelimiter = ":" '冒號
.TextFileCommaDelimiter = True '逗號
.Refresh BackgroundQuery:=False
.Delete
End With
uHead.Interior.ColorIndex = 6 '每筆第一格加〔黃色〕底
NEXT_LINE:
Loop
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.241.96.6
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1487161425.A.8EF.html
→ soyoso: 將uHead內的65536改為1048576,寫判斷,如uHead列號超過 02/15 20:46
→ soyoso: 65535時,新增個工作表sheets.add,並將超過的部分資料移 02/15 20:48
→ soyoso: 至新的工作表內,並重新判斷新工作表內最後一列的儲存格 02/15 20:48
→ soyoso: 另外如工作表名更名上worksheet.name 02/15 20:52
→ soyoso: 列號取得range.row,會傳回範圍中第一個區域中的第一列的 02/15 21:01
→ soyoso: 列號 02/15 21:01
→ aup65797: 有範例可以參考嗎? 02/15 21:53
→ soyoso: 上述sheets.add、worksheet.name、range.row丟goolge就有 02/15 22:00
→ soyoso: 範例 02/15 22:00
→ aup65797: 請問要選擇Sheets("工作表n").Select..n為常數如何使用? 02/20 21:22
→ aup65797: Sheets("工作表" & n).Select==>答案 02/20 21:28
→ aup65797: 請問如何把Sheets.Count清為零? 02/22 07:31