Подскажите пожалуйста где ошибка в следующем коде
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
заранее благодарен
получить полный путь к файлу
Модератор: Naeel Maqsudov
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
Здравствуйте zaqwerty.
виновницей неработоспособности Ваше конструкции была невнимательность автора
объявлена одна переменная
'Dim FilterIndex As String
пытались её же использовать
'=FilterIndex
в то время как инициирована совсем другая
'FileIndex = 1
В Такой конструкции меньше строк, нр она тоже будет работать:к тому же она возвращает строку (путь) открываемого файла которую можно использовать в следующей процедуреЕвгений.
P.S. для удобочитаемости выкладываемый код заключайте в тэги [соde]...[/соde]
виновницей неработоспособности Ваше конструкции была невнимательность автора
объявлена одна переменная
'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]
Teslenko_EA большое спасибо, все работает. Я начинающий подскажите какую-нибудь литературу. Читал только Уокенбаха.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
а в том коде не правильно была написана строка
там должно быть
тогда все переменные правильно объявлены и все работает
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
а в том коде не правильно была написана строка
Код: Выделить всё
Sub открыть()
...........
FileIndex = 1
...........
Код: Выделить всё
Sub открыть()
...........
FilterIndex = 1
...........
-
- Сообщения: 526
- Зарегистрирован: 04 фев 2007, 18:37
- Откуда: Сургут
- Контактная информация:
могу предложить VB6.0_знакомство.rar 2.00 Мб, поучительно и полезно.
для экспериментов Portable VB6 - PVB6.rar 4.56 Мб
Евгений.
P.S. zaqwerty "...не правильно была написана строка..." - это Вы самомтоятельно нашли, или прочли из моего предыдущего поста - "виновницей неработоспособности Ваше конструкции была невнимательность автора..." ?
для экспериментов Portable VB6 - PVB6.rar 4.56 Мб
Евгений.
P.S. zaqwerty "...не правильно была написана строка..." - это Вы самомтоятельно нашли, или прочли из моего предыдущего поста - "виновницей неработоспособности Ваше конструкции была невнимательность автора..." ?
