標題:
[發問]
請問如何在"文字方塊"輸入條件後再去搜尋資料
[打印本頁]
作者:
蝕光迴狼
時間:
2014-9-30 01:21
標題:
請問如何在"文字方塊"輸入條件後再去搜尋資料
請問要如何寫才能達到我要的效果?
1. 我想要在以下路徑搜尋我要的資料 \\D1502111\暫存區\
但資料夾有幾千個,故我用了【文字方塊1】與【文字方塊2】【文字方塊3】讓使用者可以自行輸入條件
2.希望可以達到指定路徑:\\D1502111\暫存區\資料夾一(文字方塊內容1)\資料夾二(文字方塊內容2)\
3.按執行後,可以依【搜尋的關鍵字(文字方塊內容3)】去搜尋,
D槽底下自動建立一個資料夾依【搜尋的關鍵字(文字方塊內容3)】為命名方式,
並將搜尋到的,全部檔案複製到D槽底下自動創建的資料夾。
麻煩各位高手幫幫我了,謝謝∼
作者:
蝕光迴狼
時間:
2014-10-1 13:16
有沒有高手幫幫我,拜託,因為VBA我不是很熟,
我都是看別人的程式在土法煉鋼......
作者:
蝕光迴狼
時間:
2014-10-1 14:28
麻煩各位幫幫忙了,如果Excel程式,無法達到我想要的效果,
也請好心告訴我一下,程式辦不到,讓我早點死心放棄.....
謝謝各位熱心的高手大大,十分感謝,百分感謝,千分感謝,萬分感謝,千萬分感謝,
我也是看到此網站,有很多熱心且不求回報的高手大大在,
並想要讓此網站永續經營,也用行動表示我的誠意,
不要讓我的求助文,沉淪拜託∼
作者:
Hsieh
時間:
2014-10-1 16:18
回復
3#
蝕光迴狼
試試看
Private Sub CommandButton1_Click()
Set fsd = CreateObject("Scripting.FileSystemObject")
fd = "\\D1502111\暫存區\" & TextBox1 & "\" & TextBox2 & "\" '檔案資料夾位置
fs = Dir(fd & "*" & TextBox3 & "*") '測試關鍵字檔名是否存在
If fs <> "" Then
If fsd.folderexists("D:\自創資料夾") = False Then fsd.createfolder "D:\自創資料夾" '自創資料夾不存在則建立
fsd.copyfile fd & "*" & TextBox3 & "*", "D:\自創資料夾" '複製檔案
Else
Exit Sub
End If
End Sub
複製代碼
作者:
蝕光迴狼
時間:
2014-10-1 17:57
回復
4#
Hsieh
Dear Hsieh:
真的由衷感謝你的幫助,這幫了我很大的忙,
因為我沒有任何的基礎,所以剛起步對我這初學者來說很辛苦,
我會努力的,到時還請各位高手與 Hsieh 大大多多費心了,謝謝∼
作者:
蝕光迴狼
時間:
2014-10-1 19:21
回復
4#
Hsieh
Dear Hsieh 版主:
再請問如果連子資料夾,底下的檔案也要全部尋找複製,
要加入什麼指令? 加在哪一行 ?
謝謝
作者:
GBKEE
時間:
2014-10-2 10:28
回復
6#
蝕光迴狼
對話框 試試看
Sub Ex()
With Application.FileDialog(msoFileDialogFolderPicker) '開啟資料夾的對話框
If .Show = True Then
If MsgBox(.SelectedItems(1) & " 中搜尋 *" & TextBox3, vbYesNo) = vbYes Then
If Dir("D:\自創資料夾", vbDirectory) = "" Then MkDir ("D:\自創資料夾") '自創資料夾不存在則建立
TextBox1 = .SelectedItems(1)
副程式 .SelectedItems(1)
End If
End If
End With
End Sub
Private Sub 副程式(資料夾 As String)
Dim Fs As Object, F As Object
Set Fs = CreateObject("Scripting.FileSystemObject")
If Dir(資料夾 & "\*" & TextBox3 & "*") <> "" Then '測試關鍵字檔名是否存在
Fs.copyfile 資料夾 & "\*" & TextBox3 & "*", "D:\自創資料夾"
End If
'*** 如資料夾下有子資料夾 再呼叫這副.程式 ***
'呼叫 程式的迴圈
For Each F In Fs.GetFolder(資料夾).SUBFolderS
Debug.Print F '可看一下 子資料夾名稱
副程式 F & ""
Next
End Sub
複製代碼
作者:
蝕光迴狼
時間:
2014-10-2 16:20
本帖最後由 蝕光迴狼 於 2014-10-2 16:22 編輯
回復
7#
GBKEE
Dear GBKEE 版主您好:
非常感謝你繁忙之間抽空幫忙。
1. 您寫的程式,可以抓到子資料夾底下的檔案。
2. 程式迴圈的方式是我最弱的項目,所以看不太懂,不容易我從中學習。
3. 有個地方不明白,執行後
並不會依關鍵字
去複製檔案,反而複製資料夾底下全部的檔案。
附件中的檔案是我用 Hsieh 版主大人,幫我寫的程式去做修改的,
目前的瓶頸是不知道,要怎麼
改
程式才能
搜尋與
複製
子資料夾底下的檔案?
●會這樣寫是為了日後方便做維護與修改程式碼。再次謝謝 GBKEE 版主大大
Private Sub CommandButton1_Click()
DM = "D:\測試用\" '搜尋主路徑
ML1 = Range("E3") '搜尋檔案資料夾目錄一
ML2 = Range("E5") '搜尋檔案資料夾目錄二
ML3 = Range("E7") '搜尋檔案關鍵字
gb = "D:\" & ML3 & "\" '存檔位置
Set fsd = CreateObject("Scripting.FileSystemObject")
fd = DM & ML1 & "\" & ML2 & "\" '檔案資料夾位置
fs = Dir(fd & "*" & ML3 & "*") '測試關鍵字檔名是否存在
If fs <> "" Then
If fsd.folderexists(gb) = False Then fsd.createfolder gb '自創資料夾不存在則建立
fsd.copyfile fd & "*" & ML3 & "*", gb '複製檔案
Else
Exit Sub '結束程式
End If
End Sub
複製代碼
作者:
GBKEE
時間:
2014-10-2 20:31
回復
8#
蝕光迴狼
3. 有個地方不明白,執行後並不會依關鍵字去複製檔案,反而複製資料夾底下全部的檔案。
10.fs = Dir(fd & "*" & ML3 & "*") '測試關鍵字檔名是否存在
11. If fs <> "" Then '這裡判斷有關鍵字檔名的檔案
'*** 不會複製資料夾底下全部的檔案 ****
複製代碼
ML3 = Range("E7") '搜尋檔案關鍵字
會是Range("E7")中沒有字串,???造成的嗎?
Option Explicit
'模組上端的 Dim (宣告變數為這模組的私用變數),僅這模組的程序可使用
Dim gb As String, fsd As Object, ML3 As String
Private Sub CommandButton1_Click()
'程序中的 Dim (宣告變數為這程序的私用變數,僅這程序中可使用)
Dim fd As String, dm As String, ML1 As String, ML2 As String
dm = "D:\測試用\" '搜尋主路徑
ML1 = Range("E3") '搜尋檔案資料夾目錄一
ML2 = Range("E5") '搜尋檔案資料夾目錄二
ML3 = Range("E7") '搜尋檔案關鍵字
gb = "D:\" & ML3 & "\" '存檔位置
Set fsd = CreateObject("Scripting.FileSystemObject")
fd = dm & ML1 & "\" & ML2 & "\" '檔案資料夾位置
If fsd.folderexists(gb) = False Then fsd.createfolder gb '自創資料夾不存在則建立
副程式 fd
End Sub
Private Sub 副程式(資料夾 As String)
Dim F As Object
Debug.Print 資料夾 '可看一下 子資料夾名稱
If Dir(資料夾 & "\*" & ML3 & "*") <> "" Then '測試關鍵字檔名是否存在
fsd.copyfile 資料夾 & "\*" & ML3 & "*", gb
End If
'*** 如資料夾下有子資料夾 再呼叫這副.程式 ***
'呼叫 程式的迴圈
For Each F In fsd.GetFolder(資料夾).SUBFolderS
副程式 F & ""
Next
End Sub
複製代碼
作者:
蝕光迴狼
時間:
2014-10-2 21:37
回復
9#
GBKEE
Dear GBKEE 版主大大:
謝謝您費心幫忙,多虧 GBKEE 你 與 Hsieh 大大,鼎力相助,再次謝謝您們了∼
作者:
蝕光迴狼
時間:
2014-10-3 01:10
回復
9#
GBKEE
Dear GBKEE 版主大大:
再請問一件事情:最後怎麼自動開啓這個資料夾?
gb = "D:\" & ML3 & "\" '存檔位置
複製代碼
爬文後,只知道下面這行程式:
Shell "explorer D:\測試用\" '單純打開資料夾
Workbooks.Open ("D:\測試用\搜尋關鍵字.xls") '單純打開檔案
但不知道怎麼運用
作者:
GBKEE
時間:
2014-10-3 05:55
回復
11#
蝕光迴狼
但不知道怎麼運用
你要做何事?
作者:
蝕光迴狼
時間:
2014-10-3 14:47
回復
12#
GBKEE
Dear GBKEE 版主大大:
打算在以下程式執行完後,自動帶出
自創資料夾
Option Explicit
'模組上端的 Dim (宣告變數為這模組的私用變數),僅這模組的程序可使用
Dim gb As String, fsd As Object, ML3 As String
Private Sub CommandButton1_Click()
Dim fd As String, dm As String, ML1 As String, ML2 As String
'程序中的 Dim (宣告變數為這程序的私用變數,僅這程序中可使用)
dm = "D:\測試用\" '搜尋主路徑
ML1 = Range("E3") '搜尋檔案資料夾目錄一
ML2 = Range("E5") '搜尋檔案資料夾目錄二
ML3 = Range("E7") '搜尋檔案關鍵字
gb = "D:\" & ML3 & "\" '存檔位置
Set fsd = CreateObject("Scripting.FileSystemObject")
fd = dm & ML1 & "\" & ML2 & "\" '檔案資料夾位置
If fsd.folderexists(gb) = False Then fsd.createfolder gb '自創資料夾不存在則建立
副程式 fd
End Sub
Private Sub 副程式(資料夾 As String)
Dim F As Object
Debug.Print 資料夾 '可看一下 子資料夾名稱
If Dir(資料夾 & "\*" & ML3 & "*") <> "" Then '測試關鍵字檔名是否存在
fsd.copyfile 資料夾 & "\*" & ML3 & "*", gb
End If
'*** 如資料夾下有子資料夾 再呼叫這副.程式 ***
'呼叫 程式的迴圈
For Each F In fsd.GetFolder(資料夾).SUBFolderS
副程式 F & ""
Next
End Sub
複製代碼
作者:
GBKEE
時間:
2014-10-3 16:20
本帖最後由 GBKEE 於 2014-10-3 19:33 編輯
回復
13#
蝕光迴狼
是這樣嗎?
'//**********************************//
ChDir gb '改變目前的目錄或檔案夾
With Application.FileDialog(msoFileDialogFilePicker)
.Show
End With
'//**********************************//
複製代碼
還是如此
'//**********************************//
Dim e As Variant
ChDir gb '改變目前的目錄或檔案夾
With Application.FileDialog(msoFileDialogFilePicker)
If .Show = True Then
For Each e In .SelectedItems
Workbooks.Open e
Next
End If
End With
'//**********************************//
複製代碼
作者:
蝕光迴狼
時間:
2014-10-3 21:56
回復
14#
GBKEE
Dear GBKEE 版主:
不知道是不是我的問題.2種都不是我要的效果,
我要的是程式執行全部跑完後,會跳出 gb = "D:\" & ML3 & "\" '存檔位置
這一行的資料夾,但一直想不出來怎麼寫?
勞煩大大您了,謝謝您∼
作者:
GBKEE
時間:
2014-10-4 05:24
回復
15#
蝕光迴狼
Option Explicit
Sub Ex()
Dim gb As String
gb = "D:\關鍵字" '存檔位置
Shell "explorer " & gb, vbMaximizedFocus
'"explorer "空一格 + (連接上)要開啟的資料夾 或 檔案
'參數:vbMaximizedFocus,請參考 Shell 函數的說明
End Sub
複製代碼
作者:
蝕光迴狼
時間:
2014-10-6 01:15
回復
16#
GBKEE
Dear GBKEE 版主大大:
可以了謝謝您細心講解,終於按照您的說明完成了,謝謝您∼
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)