Member 12737742 Ответов: 1

Как я открою браузер, а также открою из него правильный текстовый файл?


я даю цикл for для двух вариантов того, что произойдет, если файл не будет выбран.
когда я не даю цикл for for тогда он работает но тогда если я не выберу файл он покажет ошибку

Что я уже пробовал:

Sub importedrfile()
Worksheets("sheet2").Activate
Dim scan As Integer
Dim myfilepath As String
myfilepath = Application.GetOpenFilename()
If myfilepath = True Then
Open myfilepath For Input As #1
x = 0
Do Until EOF(1)
Line Input #1, linefromfile
lineitems = Split(linefromfile, vbTab)
For scan = 0 To UBound(lineitems) - 1
        lineitems(scan) = Replace(lineitems(scan), Chr(34), "")
Next
ActiveCell.Offset(x, 0).Value = lineitems(0)
ActiveCell.Offset(x, 1).Value = lineitems(1)
ActiveCell.Offset(x, 2).Value = lineitems(2)
ActiveCell.Offset(x, 3).Value = lineitems(3)
ActiveCell.Offset(x, 4).Value = lineitems(4)
ActiveCell.Offset(x, 5).Value = lineitems(5)
ActiveCell.Offset(x, 6).Value = lineitems(6)
ActiveCell.Offset(x, 7).Value = lineitems(7)
ActiveCell.Offset(x, 8).Value = lineitems(8)
ActiveCell.Offset(x, 9).Value = lineitems(9)
ActiveCell.Offset(x, 10).Value = lineitems(10)
ActiveCell.Offset(x, 11).Value = lineitems(11)
ActiveCell.Offset(x, 12).Value = lineitems(12)

x = x + 1
Loop

Close #1
ElseIf myfilepath = False Then
MsgBox ("no file selected")
End If
End Sub

Maciej Los

Не делайте репостов: http://www.codeproject.com/Questions/1129141/How-do-I-import-text-file-with-both-tab-delimiter[^]!!!

У тебя есть ответ!

Member 12737742

нет я хочу дать возможность открыть браузер а также msgbox будет отображаться когда ни один файл не выбран

Maciej Los

Смотрите мой ответ.

Member 12737742

благодарю вас сэр

Maciej Los

Лучшее "спасибо" - это когда спрашивающий принимает решение ;)
Используйте зеленую кнопку.

Karthik_Mahalingam

:)

Karthik_Mahalingam

Если ваш вопрос решен, пожалуйста, закройте этот пост, нажав кнопку" Принять ответ". в противном случае вопрос будет по-прежнему открыт, и пользователи будут отвечать на него без необходимости

1 Ответов

Рейтинг:
7

Maciej Los

Приложение.Метод GetOpenFilename (Excel)[^] отображает стандарт Open dialog box и получает имя файла от пользователя, фактически не открывая никаких файлов. Когда пользователь отменяет операцию, этот метод возвращает False Итак, приведенный ниже код неверен!

Dim myfilepath As String
myfilepath = Application.GetOpenFilename()
If myfilepath = True Then
Open myfilepath For Input As #1


Как говорится в документации MSDN, вы должны проверить, не равно ли возвращаемое значение False.

fileToOpen = Application _ 
 .GetOpenFilename("Text Files (*.txt), *.txt") 
If fileToOpen <> False Then 
 MsgBox "Open " & fileToOpen 
End If


Что касается вашего кода, то я бы изменил его следующим образом:
Dim myfilepath As String
myfilepath = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If myfilepath = CStr(False) Then Exit Sub


Для получения дополнительной информации, пожалуйста, смотрите: Программный выбор файлов в Excel для Windows и Excel для Mac[^]