Импортировать файл TXT из электронной таблицы Excel в указанную ячейку c - PullRequest
0 голосов
/ 13 июля 2020

У меня проблема, когда я хотел бы импортировать файл TXT в Excel, но мне нужно, чтобы один раздел файла всегда вставлялся в определенную ячейку, поскольку весь другой код основан на этой исходной ячейке. Я хотел бы изменить свой код VBA, чтобы учесть эту гибкость.

Ниже приведен рисунок, демонстрирующий идеальный сценарий: строка, выделенная желтым цветом, расположена в ячейке A47. Все файлы TXT будут иметь аналогичный формат, поэтому эту строку всегда следует вставлять в этот заголовок. Следующая таблица будет помещена в правильное место для последующего кода.

preferred format

However, most of the time the TXT file will be of a different size, and thus that row will not be in A47. Below is an example of this:

другой файл txt

Часть, выделенная бежевым цветом, - это та часть, которая изменяется в зависимости от размера текстового файла и, таким образом, является источником проблемы, поскольку выталкивает остальную часть файла TXT вниз. Тем не менее, этот бежевый раздел не важен, поэтому, если бы его можно было каким-то образом удалить / сократить до нужного размера, а текст ниже сместился бы в ячейку A47, это было бы целью здесь. Этот код должен работать для любого размера.

Вот код, который мне нужно импортировать txt-файл:

Sub Get_Data_From_File()
'Code to prompt the user to select a file (e.g. .TXT) and paste it in the Excel Worksheet

    Dim FiletoOpen As Variant
    Dim OpenBook As Workbook
    
    'In place to prevent the popup warning dialog box about having too much information on the clipboard as well as screen updating
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    
    'Prompting and Opening file for user
    FiletoOpen = Application.GetOpenFilename(Title:="Browse for your File & Import")
    If FiletoOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FiletoOpen)
        OpenBook.Sheets(1).Range("A1:AA1000").Copy
        ThisWorkbook.Worksheets("ImportTXT").Range("A5").PasteSpecial xlPasteValues
        OpenBook.Close False
           
    End If
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

End Sub

Заранее спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Попробуйте,

Sub Get_Data_From_File2()
'Code to prompt the user to select a file (e.g. .TXT) and paste it in the Excel Worksheet

    Dim FiletoOpen As Variant
    Dim OpenBook As Workbook
    Dim Target As Range, rngDB As Range
    Dim Ws As Worksheet
    Dim Wb As Workbook
    Dim r As Integer
    
    Set Wb = ThisWorkbook
    Set Ws = Wb.Sheets("ImportTXT")

    'In place to prevent the popup warning dialog box about having too much information on the clipboard as well as screen updating
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    'Prompting and Opening file for user
    FiletoOpen = Application.GetOpenFilename(Title:="Browse for your File & Import")
    If FiletoOpen <> False Then
        Set OpenBook = Application.Workbooks.Open(FiletoOpen)
        OpenBook.Sheets(1).Range("A1:AA1000").Copy
        ThisWorkbook.Worksheets("ImportTXT").Range("A5").PasteSpecial xlPasteValues
        OpenBook.Close False

    End If

    Set Target = Ws.Range("a42")
    Set rngDB = Target.CurrentRegion
    r = rngDB.Rows.Count
    If r > 2 Then
        Set rngDB = Target(3).Resize(r - 2)
        rngDB.EntireRow.Delete
    End If
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True

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