【问题标题】:How to import specific data from Excel file to text file and import the data from generated text file into new Excel file by one macro如何将Excel文件中的特定数据导入文本文件,并通过一个宏将生成的文本文件中的数据导入新的Excel文件
【发布时间】:2016-12-19 12:34:43
【问题描述】:

我是 VBA 新手,所以没有好主意。我已经编写了一个代码,但我无法执行我想要执行的特定任务。如果有人帮助我,我将不胜感激。 任务:

我只想开发一个自动的宏

1- 将特定单元格中的数据从 Excel 工作表导入 .txt 文件。

2- 将该数据从创建的 .txt 文件导入到新的 excel 文件中。 (注意不想在同一个 excel 文件中获取数据,我想要一个新的 excel 文件来打开其中的数据)。

我为从 excel 文件中的特定单元格导入数据而编写的代码正在生成无法获取单独列的文本文件(如图 2 所示的单独列)。这段代码给了我数据,但只有 1 列,但我想在 2 个单独的列中获取数据。

我的代码的第二部分用于将数据从文本文件复制到 excel 工作表,但在同一个 excel 工作表中,数据被复制意味着在同一个 excel 工作簿中,但在该工作簿的不同工作表中,但我希望数据应该复制到其他一些工作表中/自动生成的新excel文件/工作簿。

重要每次我更新excel表格中的数据,所以生成的.txt文件和新的excel文件中的数据也应该不断更新。请看附件的图片/图片。

我的代码

Private Sub CommandButton1_Click()

Dim rng As Range
Dim Sourceworksheet As Worksheet
Dim DestFile As String
Dim cel As Range

Application.DefaultFilePath = "C:\Libraries\Documents\"

DestFile = Application.DefaultFilePath & "\Test.txt"
Open DestFile For Output As #1

Set Sourceworksheet = ActiveWorkbook.ActiveSheet
Set rng = Range("A6:B40")

For Each cel In rng.Cells
    Write #1, cel.Address & "|" & cel.Value2
Next cel
Close #1

MsgBox "txt file exported"

Dim X As Double
Dim TXT As String

Open "C:\Users\Documents\Test.txt" For Input As #1

X = 0
Do While Not EOF(1)
    Line Input #1, TXT
    Cells(1, 1).Offset(X, 0) = TXT
    X = X + 1
Loop
Close #1

End Sub

【问题讨论】:

  • 对不起,我之前忘了添加代码。感谢 Shai Rado 改进了我的查询。真的很感谢。
  • 只是一个想法:制作一个宏将特定数据传输到一个新的 excel 文件,然后将其另存为 .txt 和 .xlsx?
  • @Cyril 如果您有为此编写的内容,这也可以使用,请与我分享,因为我不知道如何将特定的 excel 单元格数据复制到新的 excel 工作簿中。
  • 您需要中间文本文件吗?或者您可以直接复制到新的 Excel 文件中吗?中间文字似乎是多余的......
  • 抱歉回复晚了。非常感谢 Scott Holtzman 的回复。我知道,但不幸的是,我需要它来完成其他一些任务,而且我的主管也要求我们必须在其他地方使用文本文件数据。

标签: vba excel


【解决方案1】:

快速提问(将在代码中做出假设):

.1) 您是否有一个可以使用和更新的文件(固定名称)?

.2) 您正在创建的文件是否真的需要自动更新?

.3) 为什么需要单独的电子表格?在现有的工作簿中甚至可以有一个新的工作表。

如果您有一个将信息记录到的固定文件,您可以使用所需的标签制作第二个 excel 文件,然后您可以将值直接链接到固定文件,例如:

A1 = "# of new TTNR:",然后 B1 = "FILEPATH/[FIXED NAME.xlsx]Sheet1!B2"

如果您这样做了,您会在加载包含该信息的文件以更新单元格值时收到提示,Excel 将在其中显式提取命名数据。

如果您没有固定的文件名/位置,您可以创建一个宏来动态提取该值和名称。

我认为以上内容作为非 VBA 解决方案会对您有所帮助。所做的假设是您的原始数据所在的文件名是固定的,并且您的“截断”文件也可以具有固定的名称。

【讨论】:

  • 真的很抱歉回复晚了。非常感谢您的回复。 1-是的,我有一个文件,我在其中不断更新值,但由于我希望在新工作簿中调整数据的速度,所以当我在以前的工作簿中进行更改时,我需要在单击时自动更新生成的文本文件和新工作簿宏。 2- 是的,我需要自动更新我想要创建的文件。
  • 3- 我需要单独的工作簿,因为我的旧工作簿包含很多工作表,我只希望新工作簿中的一些特定数据用于开始新文档,这就是为什么我需要新工作簿而不是工作表的原因这是我主管的要求。
  • 我想下一个问题是,每次您想要移动数据时,是否都必须是一个新的工作簿?如果你这样做,你可以硬编码一个宏,当主文件打开时,你创建一个新的工作簿并复制数据范围(例如,使用 ThisWorkbook.Sheets("Sheetname").Range("A5:B41").Copy ) 然后使用“粘贴特殊”命令(例如 ActiveWorkbook.Sheets("Sheet1").Range("A1:B37").PasteSpecial xlPasteValues))粘贴到新工作簿中。
  • 非常感谢您的帮助,IT 为我工作,我的问题得到了解决。再次非常感谢您的时间和帮助。真的很感激。
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 2021-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多