Board logo

標題: [發問] 新增一個檔案的語法 [打印本頁]

作者: ziv976688    時間: 2019-4-13 00:26     標題: 新增一個檔案的語法

[attach]30375[/attach]
[attach]30376[/attach]

資料夾內除了主檔外,還另有若干個檔案(即一定另有1個(含)以上的檔案),且這若干個檔案的名稱,除了中段不同,其前後段都相同,EX︰圖片中的四個檔案名稱為
今日總表(均值排序)-1_2-(2019-02-26),今日總表(均值排序)-2_13-(2019-02-26),今日總表(均值排序)-17_連1-(2019-02-26),今日總表(均值排序)-27_25-(2019-02-26)

需求︰新增一個檔案
檔案名稱=以上述若干個檔案中任一個檔案名稱的【前段11個字(含符號)及後段12個字(含符號) & "_統計"】
檔案內工作表數量=1個
工作表名稱="統計"
工作表內容︰如附件(新增檔案)

請問︰上述需求的語法。
先謝謝各位的幫忙!
作者: zheng211016    時間: 2019-4-13 15:43

回復 1# ziv976688

只要選取檔案 它就會自動建立一個工作表 並存於同一個目錄底下

[attach]30381[/attach]

[attach]30382[/attach]
作者: ziv976688    時間: 2019-4-13 17:25

本帖最後由 ziv976688 於 2019-4-13 17:26 編輯

回復 2# zheng211016
[attach]30383[/attach]

zheng211016大大:您好!
感謝解題^^
測試結果︰"統計"工作表無法另成立為如需求名稱的新檔案(偵錯)^^"
請指正!
我的Excel版本是MS2003
謝謝您!
作者: zheng211016    時間: 2019-4-14 00:56

回復 3# ziv976688
我測試是正常的唷
你只要選取  今日總表(均值排序)-(2019-02-26).xls  這種類型的 任何一個檔案 都可以成功
或者你把操作過程給我
作者: zheng211016    時間: 2019-4-14 00:59

回復 3# ziv976688


  我是依照你上面說的 固定前後 字去抓取命名規則的 你可以注意一下是否選取的檔案有誤
作者: ziv976688    時間: 2019-4-14 08:22

本帖最後由 ziv976688 於 2019-4-14 08:33 編輯

回復 5# zheng211016
操作步驟如下:
[attach]30385[/attach]
請參考!
是否有誤~請指正!
謝謝您!

========================================
本題最主要的目的是希望點執行鍵後,能自動選取主檔同一個資料夾內的另任一個(或第1個)檔案的名稱之【前段11個字(含符號)及後段12個字(含符號)】 & "_統計",
作為產生新檔案的名稱。
可否請您指導?
謝謝您!
作者: zheng211016    時間: 2019-4-14 13:42

回復 6# ziv976688


了解 我提供你兩個按鈕
選擇檔案 : 是讓你自行選擇檔案 他會依照你選擇的檔案位置去新建1個 統計exel 位於 同一目錄底下
建立統計檔案 : 就是你想要的結果 在主檔的檔案位置新建 統計excel

    [attach]30390[/attach]
作者: ziv976688    時間: 2019-4-14 14:51

回復 7# zheng211016
不好意思,狀況還是樣^^"
點"建立統計檔案"鍵後,馬上跳出下列畫面
[attach]30391[/attach]
點偵錯~跳出下列畫面
[attach]30392[/attach]

另外點"選擇檔案"鍵後,最後的畫面狀況與 6#相同。

不知問題出在哪裡?
是不是版本的問題?我只有MS2003版,沒有辦法以2007或2010測試^^"
煩請再指正!
謝謝您!
作者: 准提部林    時間: 2019-4-14 16:26

Sub 新增檔案()
Dim P$, T$, xB As Workbook
P = ThisWorkbook.Path & "\"
T = Dir(P & "今日總表(均值排序)-*_*-(????-??-??).xls")
If T = "" Then Exit Sub
T = "今日總表(均值排序)-" & Split(Right(T, 16), ".xls")(0) & "_統計.xls"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("統計").Copy
With ActiveWorkbook: .SaveAs Filename:=P & T, CreateBackup:=False: .Close: End With
MsgBox "新檔案建立完成! "
End Sub

工作表內容, 在主檔中增建一張"統計"工作表樣本:
[attach]30393[/attach]
作者: ziv976688    時間: 2019-4-14 17:25

本帖最後由 ziv976688 於 2019-4-14 17:27 編輯

回復 9# 准提部林
准提版主︰您好!
感謝解題^^
測試結果︰執行OK!
謝謝您!
=================================
准提版主︰
您誤會了~只要手動更改檔案名稱就能解決的工作,我怎麼好意思上來麻煩各位^^"
因為我總共有6種名稱不同但格式相同的檔案名稱︰
今日總表(均值排序)-1_4-(2019-04-12),
今日總表(尾數排序)-1_4-(2019-04-12),
今日總表(合數排序)-1_4-(2019-04-12),
今日總表(生肖排序)-1_4-(2019-04-12),
今日總表(五行排序)-1_4-(2019-04-12),
今日總表(八卦排序)-1_4-(2019-04-12),
所以我的需求是希望能點執行鍵後,能自動選取主檔同一個資料夾內的另任一個(或第1個)檔案的名稱之【前段11個字(含符號)及後段12個字(含符號)】 & "_統計",作為產生新檔案的名稱。
PS︰要執行的時候,同一個資料夾內,我只會放置"執行主檔"和"單種名稱"的檔案。

能否煩請版主再次指導!
謝謝您!
作者: 准提部林    時間: 2019-4-14 17:59

回復 10# ziv976688


Sub 新增檔案()
Dim S, P$, T$, xB As Workbook, N%
P = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For Each S In Array("均值", "尾數", "合數", "生肖", "五行", "八卦")
    T = Dir(P & "今日總表(" & S & "排序)-*_*-(????-??-??).xls")
    If T = "" Then GoTo 101
    T = Left(T, 11) & Left(Right(T, 16), 12) & "_統計.xls"
    Sheets("統計").Copy
    With ActiveWorkbook: .SaveAs Filename:=P & T, CreateBackup:=False: .Close: End With
    N = N + 1
101: Next
If N > 0 Then MsgBox "共建立 " & N & " 個新檔案!  "
End Sub
作者: ziv976688    時間: 2019-4-14 18:09

回復 11# 准提部林

版主:您好!
感謝解題。
測試OK如需求。
您太厲害了,竟能任選1個或2個或...或全選 ,
這樣我就不用作6個主檔了。
謝謝您的耐心指導~感恩^^
作者: zheng211016    時間: 2019-4-15 21:45

本帖最後由 zheng211016 於 2019-4-15 21:47 編輯

回復 8# ziv976688

我在拆字的部分 設定錯誤 所以偵錯會出現另存檔案失敗
幸好有版大 出手幫忙
那我就協助 註解的部分

[attach]30401[/attach]
作者: ziv976688    時間: 2019-4-16 04:42

回復 13# zheng211016
zheng211016大大:您好!
您太謙虛了^^
謝謝您的詳細註解,使我更瞭解程式碼的意涵。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)