Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге? / 5 сообщений из 5, страница 1 из 1
15.05.2011, 12:21
    #37261150
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
Добрый день.
Есть макрос:
Код: 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
15.05.2011, 14:47
    #37261270
The_Prist
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
Код: 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
15.05.2011, 16:33
    #37261371
Как в Excel-макросе заставить искать и сохранять файлы в текущем каталоге?
The_Prist,

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

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


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