- 帖子
- 9
- 主題
- 4
- 精華
- 0
- 積分
- 13
- 點名
- 0
- 作業系統
- window7
- 軟體版本
- office 2010
- 閱讀權限
- 10
- 性別
- 女
- 來自
- HsinChu
- 註冊時間
- 2013-10-14
- 最後登錄
- 2014-6-26
|
3#
發表於 2013-10-15 18:38
| 只看該作者
回復 2# GBKEE
一直卡在 ActiveSheet.Name = Windows(WorkName).ActiveSheet.Range("b" & i)
另外, 若我改成TXT FILE, 可以改成.... 可一直會卡在 開啟txt檔案部份, 還有TXT FILE 會像附件有 " | " "---" 要如何一併處理.
Option Explicit
Private Sub cmdMerge_Click()
Dim objsheet As Worksheet, desc As Workbook, WorkName As Workbook, Filename As String
Dim Sh As Worksheet, Used As Worksheet, Rng As Range, r As Range, i As Integer, n As Integer, j As Integer
Set WorkName = ThisWorkbook '程式所在檔案名稱 'WorkName = Excel.ActiveWorkbook.Name '作用中檔案名稱
Set desc = Excel.Workbooks.Add '開新的workbook
i = 1
While WorkName.ActiveSheet.Range("b" & i) <> ""
Filename = WorkName.ActiveSheet.Range("b" & i) & ".txt"
'開啟txt檔案
Workbooks.OpenText Filename:=Excel.Windows(WorkName).Path & "\" & Filename, Origin:=950, StartRow:=8, DataType:=xlFixedWidth, FieldInfo:=Array( _
Array(0, 1), Array(1, 1), Array(7, 1), Array(12, 1), Array(34, 1), Array(42, 1), Array(43, 1 _
), Array(51, 1), Array(53, 1), Array(61, 1), Array(63, 1), Array(71, 1), Array(73, 1), Array _
(81, 1), Array(83, 1), Array(91, 1), Array(93, 1), Array(101, 1), Array(103, 1), Array(111, _
1), Array(113, 1), Array(121, 1), Array(123, 1), Array(137, 1), Array(140, 1)), _
TrailingMinusNumbers:=True
'Workbooks.Open WorkName.Path & "\" & Filename
Workbooks(Filename).ActiveSheet.Copy desc.Sheets(1)
ActiveSheet.Rows(1).Delete
ActiveSheet.Name = Windows(WorkName).ActiveSheet.Range("b" & i)
Windows(Filename).Close
i = i + 1 '讀取下一個檔案名稱
Wend
Set Used = desc.Sheets("sheet1") '*** 開新的workbook*** Sheets("合併成的工作表")
'Application.DisplayAlerts = False '停止 刪除Sheet時 預設的警告
For Each Sh In Sheets
If Sh.Name <> Used.Name Then
Set Rng = Used.UsedRange(Used.UsedRange.Rows.Count, 1)(1, 1)
'sh.UsedRange.Offset(1).Copy.Rng '複製來源有標頭
Sh.UsedRange.Copy Rng '複製來源沒有標頭
' SH.Delete '刪除已經複製好的sheet
End If
Next
Used.UsedRange.Sort key1:=Used.Range("P2"), order1:=xlAscending, Header:=xlNo
n = Used.UsedRange.Rows.Count
'MsgBox n
For j = 2 To n
If Used.Range("c" & j) <> "" And Used.Range("p" & j) = "" Then
Used.Rows(j).Clear
End If
Next
j = j + 1 ' 要將所有的資料確認過
MsgBox "已將所有檔案匯入活頁中", , "Anny note"
End Sub |
-
-
test1.zip
(742 Bytes)
|