返回列表 上一主題 發帖

[發問] 如何拆檔和結合新插入的指定文字檔

回復 4# GBKEE

   因主檔名無法修改
    原#2第30列語法
   E.CurrentRegion.Name = Replace(Replace(E, "*]", ""), "[*", "")
   是否可將"定義名稱 " 所指向的檔名用split分割後
   再加上連結符號 "-" 作關鍵字替代
   如BB-1先分成 BB和數字"1"
   再結合檔名成文字"BB"&"-"&"1"

    以上想法
    煩請指導
    謝謝!

TOP

回復 3# luke
BB-1.csv  ->  BB_1.csv

TOP

回復 2# GBKEE

   當檔案名字中有連結符號 "-" 如BB-1.csv時
   會出現執行階段錯誤 '1004'
    Error.jpg
   煩請先進  指導 謝謝
    TEST21A.rar (36.81 KB)

TOP

本帖最後由 GBKEE 於 2012-6-4 12:06 編輯

回復 1# luke
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar, E As Variant, xi As Integer, xlCsv As String, xlPath As String
  4.     Dim Sh(1 To 2) As Worksheet
  5.     xlPath = ThisWorkbook.Path & "\"                                '->修改為正確的檔案路徑
  6.     Set Sh(1) = Workbooks.Open(xlPath & "test21.csv").Sheets(1)
  7.     Set Sh(2) = Sh(1).Parent.Sheets.Add
  8.     Sh(1).Cells.Copy Sh(2).Cells(1)                                 '複製 test21.csv 的資料                             '
  9.     xlCsv = Dir(xlPath & "*.Csv")                                   '尋找 *.Csv檔案
  10.     Do While xlCsv <> "" And LCase(xlCsv) <> "test21.csv"
  11.         With Workbooks.Open(xlPath & xlCsv).Sheets(1)
  12.             Sh(2).Cells(Rows.Count, 1).End(xlUp).Offset(2) = "[*" & xlCsv & "*]"
  13.             .[a1].CurrentRegion.Copy Sh(2).Cells(Rows.Count, 1).End(xlUp).Offset(1)
  14.             .Parent.Close 0
  15.         End With
  16.         xlCsv = Dir
  17.     Loop
  18.      With Sh(2)
  19.         .Activate
  20.         For Each E In ActiveWorkbook.Names
  21.             '刪除所有已定義的名稱 以避免 : 定義的名稱中有不在的 *.Csv
  22.              E.Delete
  23.         Next
  24.        '*** 處裡 已匯入的 *.Csv  *********
  25.         Ar = .Range("a:a").Value
  26.        .Range("a:a").Replace "[*.*]", "=1/0"                                '[*.Csv] 替代為錯誤值
  27.        .Range("a:a").SpecialCells(xlCellTypeFormulas, xlErrors).Select      '選擇有錯誤值的儲存格
  28.         .Range("a:a").Value = Ar                                            '複原原來的值
  29.         For Each E In Selection
  30.             E.CurrentRegion.Name = Replace(Replace(E, "*]", ""), "[*", "")
  31.             '每一儲存格的延伸範圍: 定義名稱  *.Csv
  32.         Next
  33.         '****************************
  34.         Sh(1).Cells.Clear      'test21.csv.Sheets(1) :清除所有資料 重新匯入排序後的*.Csv
  35.         For Each E In ActiveWorkbook.Names             '定義名稱 :會自動排序名稱
  36.             xi = Sh(1).Cells(Rows.Count, 1).End(xlUp).Row
  37.             xi = IIf(xi = 1, 1, xi + 2)
  38.             Range(E.Name).Copy Sh(1).Cells(xi, 1)
  39.             xi = Sh(1).Cells(Rows.Count, 1).End(xlUp).Row
  40.             Sh(1).Cells(xi + 2, 1) = "[*div*]"
  41.         Next
  42.         Application.DisplayAlerts = False
  43.         .Delete                                         '刪除工作表
  44.         Application.DisplayAlerts = True
  45.     End With
  46.     '*****  測試 成功後 解除註解 可存檔
  47.     'Sh(1).Parent.Close True
  48. End Sub
複製代碼

TOP

        靜思自在 : 【蒙蔽的自由】人常在什麼都可以自由自在的時候,卻被這種隨心所欲的自由蒙蔽,虛擲時光而毫無覺知。
返回列表 上一主題