powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
5 сообщений из 5, страница 1 из 1
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
    #37261150
Добрый день.
Есть макрос:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Sub High_()
'
    Sheets.Add After:=Sheets(Sheets.Count)
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;D:\TEMP\High_.txt", Destination:=Range( _
        "$A$1"))
        .Name = "High_"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod =  0 
        .TextFilePromptOnRefresh = False
        .TextFilePlatform =  866 
        .TextFileStartRow =  1 
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array( 9 ,  9 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 )
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:1").Select
    Selection.Delete Shift:=xlUp
    Columns("B:T").Select
    Selection.Delete Shift:=xlToLeft
    Range("A1:A501").Select
    Range("A7").Activate
    ChDir "D:\TEMP"
    ActiveWorkbook.SaveAs Filename:="D:\TEMP\High.txt", _
        FileFormat:=xlUnicodeText, CreateBackup:=False
    Sheets("High").Select
    ActiveWindow.SelectedSheets.Delete
End Sub

Макрос будет выбирать определённый столбец данных и сохранять в текстовый файл.
Как мне избавиться от привязки к каталогу: D:\TEMP, чтобы макрос на любом другом компьютере сам находил файл: High_.txt, а потом сохранял в файл: High.txt того-же каталога, откуда был и запущен. Другом компьютере, любом другом диске, структуре каталогов???
Как избавиться от жесткого привязывания к D:\TEMP ???
Если не указывать каталог, как в выделенном коде, работает вообще не правильно. И даже без указания конкретного каталога так же
Макрос создавался посредством записи действий.
Заранее Большое Спасибо.

Office 2010
...
Рейтинг: 0 / 0
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
    #37261270
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Sub High_()
Dim sPath As String
sPath = "D:\TEMP"
    Sheets.Add After:=Sheets(Sheets.Count)
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;" & sPath & "\High_.txt", Destination:=Range( _
        "$A$1"))
        .Name = "High_"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod =  0 
        .TextFilePromptOnRefresh = False
        .TextFilePlatform =  866 
        .TextFileStartRow =  1 
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array( 9 ,  9 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 )
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:1").Delete Shift:=xlUp
    Columns("B:T").Delete Shift:=xlToLeft
    Range("A1:A501").Select
    Range("A7").Activate
    ChDir sPath
    ActiveWorkbook.SaveAs Filename:=sPath & "\High.txt", _
        FileFormat:=xlUnicodeText, CreateBackup:=False
    Sheets("High").Select
    ActiveWindow.SelectedSheets.Delete
End Sub

Чтобы макрос сам искал файл - это очень проблематично, ибо времени может много занять. Но можно заставить пользователя самого выбирать данный файл.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Sub High_()
    Dim sPath As String, sFullFileName As String
    sFullFileName = Application.GetOpenFilename("TXT Files(*.txt),*.txt", , , , False)
    If sFullFileName = "False" Then Exit Sub
    sPath = Dir(sFullFileName, vbDirectory)
    Sheets.Add After:=Sheets(Sheets.Count)
    With ActiveSheet.QueryTables.Add(Connection:= _
                                     "TEXT;" & sFullFileName, Destination:=Range("$A$1"))
        .Name = "High_"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod =  0 
        .TextFilePromptOnRefresh = False
        .TextFilePlatform =  866 
        .TextFileStartRow =  1 
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = False
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = True
        .TextFileColumnDataTypes = Array( 9 ,  9 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 ,  1 )
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
    Rows("1:1").Delete Shift:=xlUp
    Columns("B:T").Delete Shift:=xlToLeft
    Range("A1:A501").Select
    Range("A7").Activate
    ChDir sPath
    ActiveWorkbook.SaveAs Filename:=sPath & "\High.txt", _
                          FileFormat:=xlUnicodeText, CreateBackup:=False
    Sheets("High").Select
    ActiveWindow.SelectedSheets.Delete
End Sub
...
Рейтинг: 0 / 0
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
    #37261371
The_Prist,

Спасибо за подсказки, выбрал второй Ваш вариант.
Извиняюсь, но переменная sPath содержит только имя самого файла.
А переменная sFullFileName - полный путь вместе с именем файла.
Из-за этого в перед сохранением файла в функции ChDir выскакивает ошибка 76 "Path not found".
Как мне правильно подсунуть ей правильный путь исключая имя файла?
...
Рейтинг: 0 / 0
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
    #37261395
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И то верно. Мой косяк, недоглядел :)
Код: plaintext
ChDir Replace(sFullFileName, sPath, "")
...
Рейтинг: 0 / 0
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
    #37261476
The_Prist,

Большое спасибо!
Получилось в итоге еще лучше, с заменой исходного файла итоговым :)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]