- 帖子
- 913
- 主題
- 150
- 精華
- 0
- 積分
- 1089
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- office 2019
- 閱讀權限
- 50
- 性別
- 女
- 註冊時間
- 2011-8-28
- 最後登錄
- 2023-7-19
 
|
17#
發表於 2012-11-10 13:53
| 只看該作者
回復 9# GBKEE
大大,
我試著修改了一部份程式,程式的用意在以"貼簽名.xlsm"的"EX" sheet的指定儲存格D3內的檔名,執行"TXT"的巨集,現在它可以執行巨集,但出現了個錯誤,可否幫忙指點? ..先謝謝了.
程式執行時,應該將 Shipping for ACE.xlsx的"Booking" sheet的資料copy 到TXT中,現在它雖然做到了,可是連同"貼簽名.xlsm"的"EX" sheet也有copy的動作(整著工作表出現copy後的虛線閃動),我該如何修改,讓它不要執行不正確的copy動作?
以下是修改完後的程式:- Sub txt()
- With Workbooks(Workbooks("貼簽名.xlsm").Worksheets("EX").Range("D3").Value) '改這裡...
- 'Creat a TXT
- With .Sheets("Booking")
- Cells.Select
- Selection.Copy
- Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
- :=False, Transpose:=False
- Dim Rng(1 To 2) As Range, Fs As Object, A As Object, E As Range
- Dim S As Variant, xS As Variant
- Application.ScreenUpdating = False
- End With
- End With
- With Workbooks(Workbooks("貼簽名.xlsm").Worksheets("EX").Range("D3").Value) '改這裡...
- Set Rng(1) = .Sheets("Booking").[B1:B45] 'Rng(1) 工作表要複製的範圍
- Set Rng(2) = .Sheets("Booking").[A1] 'Rng(2) 存檔名稱的儲存格
- Rng(2) = Rng(2) & "_" & Rng(2).Offset(1) & "_" & Rng(2).Offset(2) 'Rng(2) 存檔檔名須多加[A2]的儲存格名稱
- End With
- Set Fs = CreateObject("Scripting.FileSystemObject") 'FileSystemObject 物件 提供對電腦檔案系統的存取。
- Set A = Fs.CreateTextFile("P:\TXT\" & Rng(2) & ".txt", True) '建立文字檔案
- Debug.Print Rng(1).Cells(27) 'Debug.Print :即時運算視窗 可見到 RAttn:? Mr. Peter Holfelder 中 ? 為 不可見字元 160"
- Rng(1).Replace ChrW(160), "" '消除不可字元 160
- For Each E In Rng(1) '依序處裡複製範圍的儲存格
- S = Split(E, Chr(10))
- If UBound(S) > -1 Then '***有換行 的文字
- For Each xS In S
- A.WriteLine (xS) '儲存格寫入文字檔
- Next
- Else
- A.WriteLine (E.Text) '儲存格寫入文字檔
- End If
- Next
- A.Close
- Shell "Cmd /c start P:\TXT\" & Rng(2) & ".txt" '自動打開TXT檔
- Application.ScreenUpdating = True
- End Sub
複製代碼 |
|