Предлагая пользователю выбрать текстовый файл из местоположения - PullRequest
0 голосов
/ 30 сентября 2019

Имеют следующий макрос, который импортирует данные из текстового файла из предопределенного местоположения. Может кто-нибудь, пожалуйста, помогите отредактировать коды так, чтобы я получил приглашение выбрать текстовый файл из местоположения, которое я выбираю. Заранее спасибо.

Sub IFS()
    Range("A1").Select
    Workbooks.OpenText Filename:="C:\DOWNLOADS\SKED.TXT", _
        Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _
        Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _
        Array(9, 2), Array(10, 2), Array(11, 2), Array(12, 2), Array(13, 2), Array(14, 2), Array(15 _
        , 2), Array(16, 2), Array(17, 2), Array(18, 2), Array(19, 2), Array(20, 2), Array(21, 2), _
        Array(22, 2), Array(23, 2), Array(24, 2), Array(25, 2), Array(26, 2), Array(27, 2), Array( _
        28, 2), Array(29, 2), Array(30, 2), Array(31, 2), Array(32, 2), Array(33, 2), Array(34, 2), _
        Array(35, 2), Array(36, 2), Array(37, 2), Array(38, 2), Array(39, 2), Array(40, 2), Array( _
        41, 2), Array(42, 2), Array(43, 2), Array(44, 2), Array(45, 2), Array(46, 2), Array(47, 2), _
        Array(48, 2), Array(49, 2), Array(50, 2), Array(51, 2), Array(52, 2), Array(53, 2), Array( _
        54, 2), Array(55, 2), Array(56, 2), Array(57, 2), Array(58, 2), Array(59, 2), Array(60, 2), _
        Array(61, 2), Array(62, 2), Array(63, 2), Array(64, 2), Array(65, 2), Array(66, 2), Array( _
        67, 2), Array(68, 2), Array(69, 2), Array(70, 2), Array(71, 2), Array(72, 2), Array(73, 2), _
        Array(74, 2), Array(75, 2), Array(76, 2), Array(77, 2), Array(78, 2), Array(79, 2), Array( _
        80, 2), Array(81, 2), Array(82, 2), Array(83, 2), Array(84, 2), Array(85, 2), Array(86, 2), _
        Array(87, 2), Array(88, 2), Array(89, 2), Array(90, 2), Array(91, 2), Array(92, 2), Array( _
        93, 2), Array(94, 2), Array(95, 2), Array(96, 2), Array(97, 2), Array(98, 2), Array(99, 2), _
        Array(100, 2), Array(101, 2), Array(102, 2), Array(103, 2), Array(104, 2), Array(105, 2), _
        Array(106, 2), Array(107, 2), Array(108, 2), Array(109, 2), Array(110, 2), Array(111, 2), _
        Array(112, 2), Array(113, 2), Array(114, 2), Array(115, 2), Array(116, 2), Array(117, 2), _
        Array(118, 2), Array(119, 2), Array(120, 2), Array(121, 2)), TrailingMinusNumbers:= _
        True
    Rows("1:1").Select
    Selection.Insert Shift:=xlDown
End Sub

1 Ответ

0 голосов
/ 30 сентября 2019

Эта функция должна получать то, что вы хотите, основываясь на выборе пользователя.

Function getYOfile() As String
    Const FolderToStartWith As String = "C:\"
    Const aTitle As String = "Title: please click acccept"

    Dim yourFILE As FileDialog: Set yourFILE = Application.FileDialog(msoFileDialogFilePicker)

    'Optional Paremeter
        yourFILE.AllowMultiSelect = False
        yourFILE.Title = aTitle
        yourFILE.InitialFileName = FolderToStartWith

    'Optional add filters to types of files to display
        yourFILE.Filters.Clear
        yourFILE.Filters.Add "Text Files", "*.txt"
        yourFILE.Filters.Add "Excel Files", "*.xlsx"
        yourFILE.Filters.Add "All files", "*.*"

    'launches window
        If yourFILE.Show = -1 Then '-1 indicates a string has been found
            getYOfile = yourFILE.SelectedItems(1)
        Else
            'This would throw an error in your code so you would want to kill the process:
            MsgBox "no file selected. Macro stopped."
            End
        End If

End Function

Вы можете подтвердить, запустив этот макрос:

Sub testFunction()
    MsgBox getYOfile
End Sub

После настройки я думаю, что вы вставитеэто в вашем коде в качестве замены для вашего жестко закодированного пути ... Workbooks.OpenText Filename:=getYOfile

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...