<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FFile_Path%2FFile</id>
		<title>VBA/Excel/Access/Word/File Path/File - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.vbex.ru/index.php?action=history&amp;feed=atom&amp;title=VBA%2FExcel%2FAccess%2FWord%2FFile_Path%2FFile"/>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/File_Path/File&amp;action=history"/>
		<updated>2026-04-05T12:18:06Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/File_Path/File&amp;diff=1420&amp;oldid=prev</id>
		<title> в 16:33, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/File_Path/File&amp;diff=1420&amp;oldid=prev"/>
				<updated>2010-05-26T16:33:00Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 16:33, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/File_Path/File&amp;diff=1421&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.vbex.ru/index.php?title=VBA/Excel/Access/Word/File_Path/File&amp;diff=1421&amp;oldid=prev"/>
				<updated>2010-05-26T12:47:03Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Check file existance==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub ReadPersistedRecordset()&lt;br /&gt;
    Dim strFileName As String&lt;br /&gt;
    strFileName = &amp;quot;c:\test.txt&amp;quot;&lt;br /&gt;
    If Len(Dir(strFileName)) = 0 Then&lt;br /&gt;
        msgBox &amp;quot;File Not Found&amp;quot;&lt;br /&gt;
        Exit Sub&lt;br /&gt;
    End If&lt;br /&gt;
&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Common File Operations Simplified==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub TestGetFile() &lt;br /&gt;
    Dim nIndex As Integer &lt;br /&gt;
    Dim sFile As String &lt;br /&gt;
    sFile = GetExcelFile(&amp;quot;Testing GetExcelFile Function&amp;quot;) &lt;br /&gt;
    If sFile = &amp;quot;False&amp;quot; Then &lt;br /&gt;
        Debug.Print &amp;quot;No file selected.&amp;quot; &lt;br /&gt;
        Exit Sub &lt;br /&gt;
    End If &lt;br /&gt;
    Debug.Print sFile &lt;br /&gt;
End Sub &lt;br /&gt;
Function GetExcelFile(sTitle As String) As String &lt;br /&gt;
    Dim sFilter As String &lt;br /&gt;
    Dim bMultiSelect As Boolean &lt;br /&gt;
    sFilter = &amp;quot;Workbooks (*.xls), *.xls&amp;quot; &lt;br /&gt;
    bMultiSelect = False &lt;br /&gt;
    GetExcelFile = Application.GetOpenFilename(FileFilter:=sFilter, _ &lt;br /&gt;
        Title:=sTitle, MultiSelect:=bMultiSelect) &lt;br /&gt;
End Function &lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Does the specified file exist?==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Function FileExists(stFile As String) As Boolean&lt;br /&gt;
   If Dir(stFile) &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then FileExists = True&lt;br /&gt;
End Function&lt;br /&gt;
Sub TestForFile()&lt;br /&gt;
   Dim myFileName As String&lt;br /&gt;
   myFileName = &amp;quot;c:\SalesData1.xls&amp;quot;&lt;br /&gt;
   If FileExists(myFileName) Then&lt;br /&gt;
      MsgBox myFileName &amp;amp; &amp;quot; exists&amp;quot;&lt;br /&gt;
   Else&lt;br /&gt;
      MsgBox myFileName &amp;amp; &amp;quot; does not exist&amp;quot;&lt;br /&gt;
   End If&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Gets the file name from the path.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub GetFileName()&lt;br /&gt;
   Dim stPathSep As String&lt;br /&gt;
   Dim fileLength As Integer&lt;br /&gt;
   Dim i As Integer&lt;br /&gt;
   Dim stFullName As String&lt;br /&gt;
  &lt;br /&gt;
   stFullName = &amp;quot;C:\asdf.xls&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
   stPathSep = Application.PathSeparator&lt;br /&gt;
   fileLength = Len(stFullName)&lt;br /&gt;
   For i = fileLength To 1 Step -1&lt;br /&gt;
      If Mid(stFullName, i, 1) = stPathSep Then Exit For&lt;br /&gt;
         Debug.Print Right(stFullName, fileLength - i + 1)&lt;br /&gt;
   Next i&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==List all files under application path==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub FileList()&lt;br /&gt;
  Dim File As Variant&lt;br /&gt;
  With Application.FileSearch&lt;br /&gt;
    .LookIn = &amp;quot;C:\&amp;quot;&lt;br /&gt;
    .FileType = msoFileTypeAllFiles&lt;br /&gt;
    .Execute&lt;br /&gt;
    For Each File In .FoundFiles&lt;br /&gt;
      MsgBox File&lt;br /&gt;
    Next File&lt;br /&gt;
  End With&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==processes multiple stored files==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub BatchProcess()&lt;br /&gt;
    Dim Files() As String&lt;br /&gt;
    Dim FileSpec As String&lt;br /&gt;
    FileSpec = &amp;quot;c:\text.txt&amp;quot;&lt;br /&gt;
    NewPath = ExtractPath(FileSpec)&lt;br /&gt;
    FoundFile = Dir(FileSpec)&lt;br /&gt;
    If FoundFile = &amp;quot;&amp;quot; Then&lt;br /&gt;
        MsgBox &amp;quot;Cannot find file:&amp;quot; &amp;amp; FileSpec&lt;br /&gt;
        Exit Sub&lt;br /&gt;
    End If&lt;br /&gt;
    FileCount = 1&lt;br /&gt;
    ReDim Preserve Files(FileCount)&lt;br /&gt;
    Files(FileCount) = FoundFile&lt;br /&gt;
    Do While FoundFile &amp;lt;&amp;gt; &amp;quot;&amp;quot;&lt;br /&gt;
        FoundFile = Dir()&lt;br /&gt;
        If FoundFile &amp;lt;&amp;gt; &amp;quot;&amp;quot; Then&lt;br /&gt;
            FileCount = FileCount + 1&lt;br /&gt;
            ReDim Preserve Files(FileCount)&lt;br /&gt;
            Files(FileCount) = FoundFile&lt;br /&gt;
        End If&lt;br /&gt;
    Loop&lt;br /&gt;
    For I = 1 To FileCount&lt;br /&gt;
        Application.StatusBar = &amp;quot;Processing &amp;quot; &amp;amp; Files(I)&lt;br /&gt;
        Call ProcessFiles(Files(I))&lt;br /&gt;
    Next I&lt;br /&gt;
    Application.StatusBar = False&lt;br /&gt;
End Sub&lt;br /&gt;
Sub ProcessFiles(FileName As String)&lt;br /&gt;
    Workbooks.OpenText FileName:=FileName, Origin:=xlWindows, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(3, 1), Array(12, 1))&lt;br /&gt;
End Sub&lt;br /&gt;
Function ExtractPath(Spec As String) As String&lt;br /&gt;
    SpecLen = Len(Spec)&lt;br /&gt;
    For I = SpecLen To 1 Step -1&lt;br /&gt;
        If Mid(Spec, I, 1) = &amp;quot;\&amp;quot; Then&lt;br /&gt;
            ExtractPath = Left(Spec, I - 1)&lt;br /&gt;
            Exit Function&lt;br /&gt;
        End If&lt;br /&gt;
    Next I&lt;br /&gt;
    ExtractPath = &amp;quot;&amp;quot;&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Select a folder==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Declare Function SHGetPathFromIDList Lib &amp;quot;shell32.dll&amp;quot; Alias &amp;quot;SHGetPathFromIDListA&amp;quot; (ByVal pidl As Long, ByVal pszPath As String) As Long&lt;br /&gt;
Declare Function SHBrowseForFolder Lib &amp;quot;shell32.dll&amp;quot; Alias &amp;quot;SHBrowseForFolderA&amp;quot; (lpBrowseInfo As BROWSEINFO) As Long&lt;br /&gt;
Public Type BROWSEINFO&lt;br /&gt;
    hOwner As Long&lt;br /&gt;
    pidlRoot As Long&lt;br /&gt;
    pszDisplayName As String&lt;br /&gt;
    lpszTitle As String&lt;br /&gt;
    ulFlags As Long&lt;br /&gt;
    lpfn As Long&lt;br /&gt;
    lParam As Long&lt;br /&gt;
    iImage As Long&lt;br /&gt;
End Type&lt;br /&gt;
Function GetDirectory() As String&lt;br /&gt;
    Dim bInfo As BROWSEINFO&lt;br /&gt;
    Dim path As String&lt;br /&gt;
    Dim r As Long, x As Long, pos As Integer&lt;br /&gt;
 &lt;br /&gt;
    bInfo.pidlRoot = 0&amp;amp;&lt;br /&gt;
    bInfo.lpszTitle = &amp;quot;Select a folder.&amp;quot;&lt;br /&gt;
    bInfo.ulFlags = &amp;amp;H1&lt;br /&gt;
    x = SHBrowseForFolder(bInfo)&lt;br /&gt;
    &lt;br /&gt;
    path = Space$(512)&lt;br /&gt;
    r = SHGetPathFromIDList(ByVal x, ByVal path)&lt;br /&gt;
    If r Then&lt;br /&gt;
        pos = InStr(path, Chr$(0))&lt;br /&gt;
        GetDirectory = Left(path, pos - 1)&lt;br /&gt;
    Else&lt;br /&gt;
        GetDirectory = &amp;quot;&amp;quot;&lt;br /&gt;
    End If&lt;br /&gt;
End Function&lt;br /&gt;
Sub GetAFolder()&lt;br /&gt;
    Debug.Print GetDirectory()&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Select a location containing the files you want to list==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Declare Function SHGetPathFromIDList Lib &amp;quot;shell32.dll&amp;quot; Alias &amp;quot;SHGetPathFromIDListA&amp;quot; (ByVal pidl As Long, ByVal pszPath As String) As Long&lt;br /&gt;
Declare Function SHBrowseForFolder Lib &amp;quot;shell32.dll&amp;quot; Alias &amp;quot;SHBrowseForFolderA&amp;quot; (lpBrowseInfo As BROWSEINFO) As Long&lt;br /&gt;
Public Type BROWSEINFO&lt;br /&gt;
  hOwner As Long&lt;br /&gt;
  pidlRoot As Long&lt;br /&gt;
  pszDisplayName As String&lt;br /&gt;
  lpszTitle As String&lt;br /&gt;
  ulFlags As Long&lt;br /&gt;
  lpfn As Long&lt;br /&gt;
  lParam As Long&lt;br /&gt;
  iImage As Long&lt;br /&gt;
End Type&lt;br /&gt;
&lt;br /&gt;
Sub ListFiles()&lt;br /&gt;
    Msg = &amp;quot;Select a location containing the files you want to list.&amp;quot;&lt;br /&gt;
    Directory = GetDirectory(Msg)&lt;br /&gt;
    If Directory = &amp;quot;&amp;quot; Then Exit Sub&lt;br /&gt;
    If Right(Directory, 1) &amp;lt;&amp;gt; &amp;quot;\&amp;quot; Then Directory = Directory &amp;amp; &amp;quot;\&amp;quot;&lt;br /&gt;
    &lt;br /&gt;
    On Error Resume Next&lt;br /&gt;
    With Application.FileSearch&lt;br /&gt;
        .NewSearch&lt;br /&gt;
        .LookIn = Directory&lt;br /&gt;
        .Filename = &amp;quot;*.*&amp;quot;&lt;br /&gt;
        .SearchSubFolders = False&lt;br /&gt;
        .Execute&lt;br /&gt;
        For i = 1 To .FoundFiles.Count&lt;br /&gt;
            Debug.Print .FoundFiles(i)&lt;br /&gt;
            Debug.Print FileLen(.FoundFiles(i))&lt;br /&gt;
            Debug.Print FileDateTime(.FoundFiles(i))&lt;br /&gt;
        Next i&lt;br /&gt;
    End With&lt;br /&gt;
End Sub&lt;br /&gt;
Function GetDirectory(Optional Msg) As String&lt;br /&gt;
    Dim bInfo As BROWSEINFO&lt;br /&gt;
    Dim path As String&lt;br /&gt;
    Dim r As Long, x As Long, pos As Integer&lt;br /&gt;
    bInfo.pidlRoot = 0&amp;amp;&lt;br /&gt;
    If IsMissing(Msg) Then&lt;br /&gt;
        bInfo.lpszTitle = &amp;quot;Select a folder.&amp;quot;&lt;br /&gt;
    Else&lt;br /&gt;
        bInfo.lpszTitle = Msg&lt;br /&gt;
  End If&lt;br /&gt;
    bInfo.ulFlags = &amp;amp;H1&lt;br /&gt;
    x = SHBrowseForFolder(bInfo)&lt;br /&gt;
    path = Space$(512)&lt;br /&gt;
    r = SHGetPathFromIDList(ByVal x, ByVal path)&lt;br /&gt;
    If r Then&lt;br /&gt;
        pos = InStr(path, Chr$(0))&lt;br /&gt;
        GetDirectory = Left(path, pos - 1)&lt;br /&gt;
    Else&lt;br /&gt;
        GetDirectory = &amp;quot;&amp;quot;&lt;br /&gt;
  End If&lt;br /&gt;
End Function&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use array to store a list of files==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
Sub XLFiles()&lt;br /&gt;
    Dim FName As String&lt;br /&gt;
    Dim arNames() As String&lt;br /&gt;
    Dim myCount As Integer&lt;br /&gt;
    &lt;br /&gt;
    FName = Dir(&amp;quot;C:\*.xls*&amp;quot;)&lt;br /&gt;
    Do Until FName = &amp;quot;&amp;quot;&lt;br /&gt;
        myCount = myCount + 1&lt;br /&gt;
        ReDim Preserve arNames(1 To myCount)&lt;br /&gt;
        arNames(myCount) = FName&lt;br /&gt;
        FName = Dir&lt;br /&gt;
    Loop&lt;br /&gt;
End Sub&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>