① VB查找指定文件夾並獲取文件路徑的代碼
1.首先打開Excel電子表格,然後在開發工具中打開VBA編輯器,如下圖。
② VB 搜索文件夾
VB搜索文件夾,列出指定文件夾下全部文件夾或全部隱藏的文件夾
'查找第一個文件的API
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
'查找下一個文件的API
Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
'獲取文件屬性的API
Private Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Long
'關閉查找文件的API
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
'常量
Private Const MAX_PATH = 260
Private Const MAXDWORD = &HFFFF
Private Const INVALID_HANDLE_VALUE = -1
Private Const FILE_ATTRIBUTE_ARCHIVE = &H20
Private Const FILE_ATTRIBUTE_DIRECTORY = &H10
Private Const FILE_ATTRIBUTE_HIDDEN = &H2
Private Const FILE_ATTRIBUTE_NORMAL = &H80
Private Const FILE_ATTRIBUTE_READONLY = &H1
Private Const FILE_ATTRIBUTE_SYSTEM = &H4
Private Const FILE_ATTRIBUTE_TEMPORARY = &H100
Private Const BIF_RETURNONLYFSDIRS = 1
Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type
'定義類(用於查找文件)
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
Function GetAllFilePath(path As String, SearchStr As String, bOnlyHidden As Boolean)
Dim FileName As String ' 文件名
Dim DirName As String ' 子目錄名
Dim dirNames() As String ' 目錄數組
Dim nDir As Integer ' 當前路徑的目錄數
Dim i As Integer ' 循環計數器變數
Dim hSearch As Long ' 搜索句柄變數
Dim WFD As WIN32_FIND_DATA
Dim Cont As Integer
Dim FileAttrib As Long
If Right(path, 1) <> "\" Then path = path & "\"
'搜索子目錄
nDir = 0
ReDim dirNames(nDir)
Cont = True
hSearch = FindFirstFile(path & "*", WFD)
If hSearch <> INVALID_HANDLE_VALUE Then
Do While Cont
DirName = StripNulls(WFD.cFileName)
If (DirName <> ".") And (DirName <> "..") Then
FileAttrib = GetFileAttributes(path & DirName)
If FileAttrib And FILE_ATTRIBUTE_DIRECTORY Then
If bOnlyHidden Then
If FileAttrib And FILE_ATTRIBUTE_HIDDEN Then List1.AddItem path & DirName
Else
List1.AddItem path & DirName
End If
End If
dirNames(nDir) = DirName
nDir = nDir + 1
ReDim Preserve dirNames(nDir)
End If
Cont = FindNextFile(hSearch, WFD) '獲取下一個子目錄
Loop
Cont = FindClose(hSearch)
End If
' 遍歷目錄並累計文件總數
hSearch = FindFirstFile(path & SearchStr, WFD)
Cont = True
If hSearch <> INVALID_HANDLE_VALUE Then
While Cont
FileName = StripNulls(WFD.cFileName)
If (FileName <> ".") And (FileName <> "..") Then
GetAllFilePath = GetAllFilePath + (WFD.nFileSizeHigh * MAXDWORD) + WFD.nFileSizeLow
End If
Cont = FindNextFile(hSearch, WFD) ' 獲取下一個文件
Wend
Cont = FindClose(hSearch)
End If
'如果子目錄存在則遍歷之
If nDir > 0 Then
For i = 0 To nDir - 1
GetAllFilePath = GetAllFilePath + GetAllFilePath(path & dirNames(i) & "\", SearchStr, bOnlyHidden)
Next i
End If
End Function
Function StripNulls(OriginalStr As String) As String
If (InStr(OriginalStr, Chr(0)) > 0) Then
OriginalStr = Left(OriginalStr, InStr(OriginalStr, Chr(0)) - 1)
End If
StripNulls = OriginalStr
End Function
Private Sub Command1_Click()
Dim SearchPath As String
Dim FindStr As String
List1.Clear
SearchPath = "c:\rootdir"
FindStr = "*.*"
GetAllFilePath SearchPath, FindStr, true
End Sub
調用方法
GetAllFilePath SearchPath, FindStr, bOnlyHidden
SearchPath 起始路徑
FindStr 要查找文件夾名稱
bOnlyHidden 是否只查找隱藏的, true 只查找隱藏文件夾, false 全部文件夾
③ 在VB中,如何查找文件
在這里需要舉一個例子好能清楚的了解在VB中怎麼查找文件,如下:
假設要找的文件是TextBox 叫 TextBox1,那麼可以在VB中這樣寫:
dim FileName, Path as string
Path = "D:\123\"
FileName = Path & TextBox1.Text & ".xlsx" (後面根據文件的擴展名更改即可)
Workbooks.Open filename:=FileName
VB全稱是Visual Basic,是一種由 Microsoft 公司開發的結構化的、模塊化的、面向對象的、包含協助開發環境的事件驅動為機制的可視化程序設計語言。從任何標准來說,VB都是世界上使用人數最多的語言——不管是盛贊VB的開發者還是抱怨VB的開發者的數量。它源自於BASIC編程語言。VB擁有圖形用戶界面(GUI)和快速應用程序開發(RAD)系統,可以輕易的使用DAO、RDO、ADO連接資料庫,或者輕松的創建ActiveX控制項。程序員可以輕松的使用VB提供的組件快速建立一個應用程序。
④ vb 如何查找一個文件 快捷方式 路徑 急.
點擊開始,程序,運行,在裡面輸入你要找的路徑即可找到
或者用搜索文件夾和文件方式找到
⑤ 打開VB時 vbe6ext.olb 不能被載入,怎麼辦,w7 64位的,然後晚上查了找VB6和VB7的文件夾
一、關閉Microsoft word/excel/PowerPoint法式。 二、找到找到文件VBE6EXT.OLB,打開C:\Program Files (x86)\Co妹妹on Files\microsoft shared\VBA\VBA6 因人而異,也有可能在Program Files目次里。 三、把VBE6EXT.OLB文件改為VBE6EXT.OLD ,然後肯定。 四、打開Excel法式,入進「開發東西」,若是你沒有這個菜單,請在功能欄上右鍵單擊,選擇「自界說功能區」,並在右邊列表中選擇「開發東西」,點擊肯定。 五、單擊「Visual Basic中」將其打開 六、一個彈出窗口來扣問是否要修復法式,請單擊是,運行修復(由於我已經經修復過了,就沒有彈出窗口了,無法截圖了) 七、關閉Excel,然後從新打開它,就行了。
⑥ VB中怎麼查找文件夾中的文件並且打開
假設你的那個TextBox叫TextBox1,則在VBA中可以寫:
dimFileName, Path asstring
Path = "D:123"
FileName= Path & TextBox1.Text & ".xlsx" (後面根據文件的擴展名更改)
Workbooks.Openfilename:=FileName
這是基本代碼,其他的可以自由發揮。
以下是我常用的一段代碼,作用是彈出一個文件夾選擇框,選中文件夾後,可以自動依次打開所有文件,方便批量處理。如果不想打開很多,就把 FileDialog 里的參數改為msoFileDialogFilePicker 即可,當然,後面的For...Next循環也就不需要了。
DimPath,filename,FNameAsString
DimFileNumber,i,mAsInteger
DimfopenAsFileDialog
m=1
Setfopen=Application.FileDialog(msoFileDialogFilePicker)
Iffopen.Show=0ThenExitSub
Path=fopen.SelectedItems(1)&""
Sheet2.Range("A:A").ClearContents
'列出目錄文件名
filename=Dir(Path)
DoUntilfilename=""
Sheet2.Cells(m,1)=filename
m=m+1
filename=Dir
Loop
FileNumber=WorksheetFunction.CountA(Sheet2.Range("A:A"))'文件總數
Fori=1ToFileNumber
Workbooks.Openfilename:=Path&Sheet2.Cells(i,1)
CallWork
ActiveWorkbook.CloseTrue
Next
⑦ VB獲取文件夾路徑
給你個VB遍歷文件夾的代碼吧
Private
Declare
Function
FindFirstFile
Lib
"kernel32"
Alias
"FindFirstFileA"
(ByVal
lpFileName
As
String,
lpFindFileData
As
WIN32_FIND_DATA)
As
Long
'查找下一個文件的API
Private
Declare
Function
FindNextFile
Lib
"kernel32"
Alias
"FindNextFileA"
(ByVal
hFindFile
As
Long,
lpFindFileData
As
WIN32_FIND_DATA)
As
Long
'獲取文件屬性的API
Private
Declare
Function
GetFileAttributes
Lib
"kernel32"
Alias
"GetFileAttributesA"
(ByVal
lpFileName
As
String)
As
Long
'關閉查找文件的API
Private
Declare
Function
FindClose
Lib
"kernel32"
(ByVal
hFindFile
As
Long)
As
Long
Const
MAX_PATH
=
260
Const
MAXDWORD
=
&HFFFF
Const
FILE_ATTRIBUTE_DIRECTORY
=
&H10
Private
Type
FILETIME
dwLowDateTime
As
Long
dwHighDateTime
As
Long
End
Type
Dim
tempstr
As
String
'定義類(用於查找文件)
Private
Type
WIN32_FIND_DATA
dwFileAttributes
As
Long
ftCreationTime
As
FILETIME
ftLastACCESSTime
As
FILETIME
ftLastWriteTime
As
FILETIME
nFileSizeHigh
As
Long
nFileSizeLow
As
Long
dwReserved0
As
Long
dwReserved1
As
Long
cFileName
As
String
*
MAX_PATH
cAlternate
As
String
*
14
End
Type
Dim
filecount
As
Integer
Dim
dirs()
As
String
Dim
curr
As
Long
Dim
ss()
As
String
Private
Sub
Command1_Click()
tempstr
=
"c:"
searchdir
tempstr
filecount
=
0
End
Sub
Public
Function
searchdir(path
As
String)
Dim
WFD
As
WIN32_FIND_DATA
Dim
i
As
Long
Dim
temp
As
String
Dim
h
As
Long
Dim
zhao
As
Long
Dim
iindex
As
Integer
Dim
dirs()
As
String
Dim
l
As
Long
zhao
=
1
h
=
FindFirstFile(path
&
"\*.*",
WFD)
If
h
<>
-1
Then
While
zhao
zhao
=
1
temp
=
Left(WFD.cFileName,
InStr(WFD.cFileName,
Chr$(0))
-
1)
If
temp
<>
"."
And
temp
<>
".."
Then
If
WFD.dwFileAttributes
And
vbDirectory
Then
ReDim
Preserve
dirs(iindex)
dirs(iindex)
=
path
&
"\"
&
temp
iindex
=
iindex
+
1
ReDim
Preserve
ss(filecount)
ss(filecount)
=
path
&
"\"
&
temp
filecount
=
filecount
+
1
End
If
End
If
zhao
=
FindNextFile(h,
WFD)
Wend
End
If
FindClose
(h)
If
iindex
>
0
Then
For
i
=
0
To
iindex
-
1
Call
searchdir(dirs(i))
Next
i
End
If
End
Function
⑧ VB在哪個文件夾里啊
可以參考下面方法處理:
1、首先打開瀏覽器,然後在搜索欄輸入WPSvba插件,點擊搜索,然後在搜索到的頁面點擊打開。如下圖
⑨ 如何獲得vb編譯的exe所在的文件夾
app.path 即可獲取當前文件夾
⑩ vb 如何通過一個文件的全路徑獲得該文件所在文件夾
解決這個問題有兩種方法。
第一種:知道了文件的全路徑,那麼路徑中當然也包含文件所在的文件夾信息,只要從中提取即可。例如,已知文件全路徑為「C:WindowsSystem32abc.dll」並賦予變數strPt,可用過下面語句獲取文件夾。
left(strPt,instrrev(strPt,""))
instrrev函數的作用是從右側開始查找指定字元串,並返回數值,此處返回值為20.left函數的作用是從左往右取N個字元,此例中取20個,最後結果為:C:WindowsSystem32。
第二種方法:使用FileSystemObject對象。代碼如下:
dimfsoasobject,strFolderasobject
setfso=createobject("scripting.filesystemobject")
setstrFolder=fso.getfolder("C:WindowsSystem32abc.dll")
msgboxstrFolder.path
文件系統對象FSO的英文全稱是File System Object ,這種對象模型提出了有別於傳統的文件操作語句處理文件和文件夾的方法。通過採用object.method這種在面向對象編程中廣泛使用的語法,將一系列操作文件和文件夾的動作通過調用對象本身的屬性直接實現。