返回列表 上一主題 發帖

[發問] 用excel打開筆記本

回復 29# GBKEE
G大,
程式執行OK,不過想請問,程式中都沒有看到[A2]的儲存格,為什麼儲存時會自動加上[A2]的儲存格名稱?

TOP

回復 31# PJChen
Rng(2).Offset(1)  就是[A2]

Offset 屬性
expression.Offset(RowOffset, ColumnOffset)
expression     必選。該運算式傳回 Range 物件。
RowOffset      選擇性的 Variant。用列數表示的區域位移 (正值、負數或零 (0))。正值表示向下位移,負值表示向上位移。預設值為 0。
ColumnOffset      選擇性的 Variant。用欄數表示的區域位移 (整數、負數或 0 (零))。正值表示右位移,負值表示左。預設值為 0。

TOP

回復 32# GBKEE

感謝G大說明.

TOP

回復 32# GBKEE
再請教G大,
為什麼EXCEL的巨集中,有時可以直接使用儲存格位置當成檔案名稱,如: Set Rng(2) = .Sheets("booking").[A1]
有時候又必須使用Offset,如:   Rng(2) = Rng(2) & "_" & Rng(2).Offset(1)
要如何知道何時該用什麼?

TOP

回復 32# GBKEE
G大,

之前的程式執行宊然出現一個對話框,並且巨集的這一行被標註黃色底:    A.WriteLine (E.Text)         

       
   VBA TxT.zip (25.68 KB)

TOP

本帖最後由 GBKEE 於 2012-5-22 15:15 編輯

回復 34# PJChen
如 A=A1      A.Cells(1,1)  =>A1     ,A.Offset(0,0)=>A1  可隨個人喜好
回復 35# PJChen
有錯誤是因  B27:  RAttn:? Mr. Peter Holfelder 中 ? 為 不可見字元 160
程式已修正 符合 印列頁的的格式匯入文字檔中
  1. Sub try()
  2. Windows("Shipping for Holfelder.xlsx").Activate
  3. 'Creat a TXT
  4. Sheets("Booking").Select
  5. Cells.Select
  6. Selection.Copy
  7. Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  8. :=False, Transpose:=False
  9. Dim Rng(1 To 2) As Range, Fs As Object, A As Object, E As Range
  10. Dim S As Variant, xS As Variant
  11. Application.ScreenUpdating = False
  12. With Workbooks("Shipping for Holfelder.xlsx") '請改成要複製活頁簿的名稱(已經打開)
  13. 'With Workbooks.Open("P:\Shipping for Holfelder.xlsx") '請改成要複製活頁簿的名稱(尚未打開)
  14. Set Rng(1) = .Sheets("Booking").[B1:B40] 'Rng(1) 工作表要複製的範圍
  15. Set Rng(2) = .Sheets("Booking").[A1] 'Rng(2) 存檔名稱的儲存格
  16. Rng(2) = Rng(2) & "_" & Rng(2).Offset(1) 'Rng(2) 存檔檔名須多加[A2]的儲存格名稱
  17. 'RowOffset 選擇性的 Variant。用列數表示的區域位移 (正值、負數或零 (0))。正值表示向下位移,負值表示向上位移。預設值為 0。
  18. 'ColumnOffset 選擇性的 Variant。用欄數表示的區運算式域位移 (整數、負數或 0 (零))。正值表示右位移,負值表示左。預設值為 0。
  19. End With
  20. Set Fs = CreateObject("Scripting.FileSystemObject") 'FileSystemObject 物件 提供對電腦檔案系統的存取。
  21. Set A = Fs.CreateTextFile("P:\TXT\" & Rng(2) & ".txt", True) '建立文字檔案
  22. 'CreateTextFile 方法 建立一個指定的檔名並且傳回一個用於該檔案讀寫的 TextStream 物件。
  23. '如果可被覆蓋其值為 True,其為 False 時無法覆蓋
  24. Debug.Print Rng(1).Cells(27)
  25. '*** Debug.Print :即時運算視窗 可見到 RAttn:? Mr. Peter Holfelder 中 ? 為 不可見字元 160" ******
  26. Rng(1).Replace ChrW(160), ""   '**** 消除不可字元 160

  27. For Each E In Rng(1) '依序處裡複製範圍的儲存格
  28. S = Split(E, Chr(10))
  29. If UBound(S) > -1 Then '***有換行 的文字
  30. For Each xS In S
  31. A.WriteLine (xS) '儲存格寫入文字檔
  32. Next
  33. Else
  34. A.WriteLine (E.Text) '儲存格寫入文字檔
  35. End If
  36. Next
  37. A.Close
  38. 'Workbooks.Open ("P:\TXT\" & Rng(2) & ".txt") '這會以EXCEL自動打開TXT類型文件
  39. Shell "Cmd /c start P:\TXT\" & Rng(2) & ".txt" '自動打開TXT檔
  40. Application.ScreenUpdating = True
  41. End Sub
複製代碼

TOP

回復 36# GBKEE
G大,

原來還會有這種問題,感謝你的幫忙,執行沒問題了.

TOP

        靜思自在 : 能善用時間的人,必能掌握自己努力的方向。
返回列表 上一主題