Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Excel电子表格中的TXT文件导入特定单元格_Excel_Vba - Fatal编程技术网

将Excel电子表格中的TXT文件导入特定单元格

将Excel电子表格中的TXT文件导入特定单元格,excel,vba,Excel,Vba,我有一个问题,我想将一个TXT文件导入Excel,但需要将文件的一部分始终粘贴到某个单元格中,因为所有其他代码都基于该原始单元格位置。我想修改我的VBA代码,以便能够考虑这种灵活性 下图展示了理想场景:以黄色突出显示的行位于单元格A47内。所有TXT文件的格式相似,因此该行应始终粘贴在此标题内。随后,下表将被放置在正确的位置,以供后续代码使用 但是,大多数情况下,TXT文件的大小会不同,因此该行不会在A47中。下面是一个例子: 以米色突出显示的部分是根据文本文件大小而变化的部分,因此是问题的

我有一个问题,我想将一个TXT文件导入Excel,但需要将文件的一部分始终粘贴到某个单元格中,因为所有其他代码都基于该原始单元格位置。我想修改我的VBA代码,以便能够考虑这种灵活性

下图展示了理想场景:以黄色突出显示的行位于单元格A47内。所有TXT文件的格式相似,因此该行应始终粘贴在此标题内。随后,下表将被放置在正确的位置,以供后续代码使用

但是,大多数情况下,TXT文件的大小会不同,因此该行不会在A47中。下面是一个例子:

以米色突出显示的部分是根据文本文件大小而变化的部分,因此是问题的根源,因为它会向下推送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
Sub-Get_Data_From_File()
'代码,提示用户选择文件(例如.TXT)并将其粘贴到Excel工作表中
Dim FiletoOpen作为变体
将OpenBook设置为工作簿
'防止弹出有关剪贴板上信息过多以及屏幕更新的警告对话框
Application.DisplayAlerts=False
Application.ScreenUpdating=False
'为用户提示并打开文件
FiletoOpen=Application.GetOpenFilename(标题:=“浏览文件并导入”)
如果FiletoOpen为False,则
设置OpenBook=Application.Workbooks.Open(FiletoOpen)
OpenBook.Sheets(1).范围(“A1:AA1000”).副本
ThisWorkbook.Worksheets(“ImportText”).Range(“A5”).Paste特殊XLPaste值
打开书本,关闭错误
如果结束
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头
提前谢谢你

试试看

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
Sub-Get_Data_From_File2()
'代码,提示用户选择文件(例如.TXT)并将其粘贴到Excel工作表中
Dim FiletoOpen作为变体
将OpenBook设置为工作簿
变暗目标作为范围,rngDB作为范围
将Ws设置为工作表
将Wb设置为工作簿
作为整数的Dim r
设置Wb=ThisWorkbook
设置Ws=Wb.Sheets(“导入文本”)
'防止弹出有关剪贴板上信息过多以及屏幕更新的警告对话框
Application.DisplayAlerts=False
Application.ScreenUpdating=False
'为用户提示并打开文件
FiletoOpen=Application.GetOpenFilename(标题:=“浏览文件并导入”)
如果FiletoOpen为False,则
设置OpenBook=Application.Workbooks.Open(FiletoOpen)
OpenBook.Sheets(1).范围(“A1:AA1000”).副本
ThisWorkbook.Worksheets(“ImportText”).Range(“A5”).Paste特殊XLPaste值
打开书本,关闭错误
如果结束
设定目标=Ws.范围(“a42”)
设置rngDB=Target.CurrentRegion
r=rngDB.Rows.Count
如果r>2,则
设置rngDB=Target(3)。调整大小(r-2)
rngDB.EntireRow.Delete
如果结束
Application.ScreenUpdating=True
Application.DisplayAlerts=True
端接头