Страница 1 из 1

получить полный путь к файлу

Добавлено: 26 окт 2009, 17:51
zaqwerty
Подскажите пожалуйста где ошибка в следующем коде
Sub открыть()
Dim Filt As String
Dim FilterIndex As String
Dim FileName As Variant
Dim Title As String
'Настройка списка фильтра
Filt = "Текстовые файлы(*.txt),*.txt"
FileIndex = 1
'Заголовок окна
Title = "Выбирите импортируемый файл"
'Получение имени файла
FileName = Application.GetOpenFilename _
(FileFilter:=Filt, FilterIndex:=FilterIndex, _
Title:=Title)
'При отмене выйти из окна
If FileName = False Then
MsgBox "Вы не выбрали файл"
Exit Sub
End If
'Отображение полного пути файла
MsgBox "Вы выбрали" & FileName

End Sub
при выполнении выдает код ошибки 13 type mismatch

и как лучше добавить полученный путь в следующий макрос

Sub импорт()
Dim strLine As String ' Одна строка файла
Dim strCurChar As String * 1 ' Анализируемый символ строки файла
Dim strValue As String ' Значение для записи в ячейку
Dim lngRow As Long ' Номер текущей строки
Dim intCol As Integer ' Номер текущего столбца
Dim i As Integer

Open "C:\Documents and Settings\All Users\Документы\коорд.txt" For Input As #1
Do Until EOF(1)
' Считываем строку из файла
Line Input #1, strLine
Range("D3").Activate
' Разбираем считанную строку
For i = 22 To Len(strLine)
strCurChar = Mid(strLine, i, 1)
If strCurChar = Chr(88) Then
' Найден разделитель столбцов - "Х". Запишем _
сформированное значение в ячейку
ActiveCell.Offset(lngRow, intCol) = strValue
intCol = intCol + 1
strValue = ""
ElseIf strCurChar = Chr(89) Then
' Найден разделитель столбцов - "Y". Запишем _
сформированное значение в ячейку
ActiveCell.Offset(lngRow, intCol) = strValue
intCol = intCol - 1
strValue = ""
ElseIf strCurChar = Chr(90) Then
' Найден разделитель столбцов - "Z". Запишем _
сформированное значение в ячейку
ActiveCell.Offset(lngRow, intCol) = strValue
intCol = intCol - 1
strValue = ""
ElseIf strCurChar = Chr(61) Then
' Найден разделитель столбцов - "=". Запишем _
сформированное значение в ячейку
ActiveCell.Offset(lngRow, intCol) = strValue
intCol = intCol
strValue = ""
ElseIf i = Len(strLine) Then
' Конец строки - запишем в таблицу последнее _
значение в строке (перед этим дополним его последним _
символом строки, кроме кавычки)
If strCurChar <> Chr(32) Then
strValue = strValue & strCurChar
End If
' Запись в таблицу
Range("D3").Activate
ActiveCell.Offset(lngRow, intCol) = strValue
strValue = ""
ElseIf strCurChar <> Chr(32) Then
' Добавление символа в формируемое значение ячейки _
(кавычки игнорируются)
strValue = strValue & strCurChar
End If
Next i
' Переход к новой строке таблицы
intCol = 0
lngRow = lngRow + 1
Loop
' Закрываем файл
Close #1



End Sub
заранее благодарен

Re: получить полный путь к файлу

Добавлено: 26 окт 2009, 19:54
Teslenko_EA
Здравствуйте zaqwerty.
виновницей неработоспособности Ваше конструкции была невнимательность автора
объявлена одна переменная
'Dim FilterIndex As String
пытались её же использовать
'=FilterIndex
в то время как инициирована совсем другая
'FileIndex = 1

В Такой конструкции меньше строк, нр она тоже будет работать:

Код: Выделить всё

Function открыть() As String
Const sm0 = "Текстовые файлы(*.txt),*.txt", sm1 = "Выб[U]е[/U]рите импортируемый файл"
Dim FileName$  ' string 
FileName = Application.GetOpenFilename(sm0, 1, sm1)
If Not Len(FileName) = 0 Then открыть = FileName
End Function
к тому же она возвращает строку (путь) открываемого файла которую можно использовать в следующей процедуре

Код: Выделить всё

Sub импорт()
...
s = открыть
If Len(s)=0 Then Exit Sub
Open s For Input As #1
... 
Евгений.
P.S. для удобочитаемости выкладываемый код заключайте в тэги [соde]...[/соde]

Re: получить полный путь к файлу

Добавлено: 26 окт 2009, 20:23
zaqwerty
Teslenko_EA большое спасибо, все работает. Я начинающий подскажите какую-нибудь литературу. Читал только Уокенбаха.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
а в том коде не правильно была написана строка

Код: Выделить всё

 Sub открыть()
...........
    FileIndex = 1
...........
там должно быть

Код: Выделить всё

Sub открыть()
...........
   FilterIndex = 1
...........
тогда все переменные правильно объявлены и все работает

Re: получить полный путь к файлу

Добавлено: 26 окт 2009, 22:14
Teslenko_EA
могу предложить VB6.0_знакомство.rar 2.00 Мб, поучительно и полезно.
для экспериментов Portable VB6 - PVB6.rar 4.56 Мб
Евгений.
P.S. zaqwerty "...не правильно была написана строка..." - это Вы самомтоятельно нашли, или прочли из моего предыдущего поста - "виновницей неработоспособности Ваше конструкции была невнимательность автора..." ? ;)