gpt4 book ai didi

vba - 将文本文件导入 xlsm,然后覆盖 sheetname(如果已存在)

转载 作者:行者123 更新时间:2023-12-04 20:45:39 25 4
gpt4 key购买 nike

经过数小时的 google VB 脚本失败后,我想我会来到这里。

目前我已经修改了一个 VBA 脚本,它导入多个 txt 文件,并根据 txt 文件名将它们复制到 XLSM 文件中的新工作表中。

我想做两件事,谷歌上的 {solved} 答案似乎对我不起作用。

1)如果现有工作表已经存在,则覆盖它---(注意:不要删除它......它将链接到另一个工作表进行计算),并且

2)以空格分隔格式导入文本文件---再次,解决了不玩游戏的答案。

谢谢(ps - 这里有几个类似的问题,有些对我的问题有类似的已解决答案,但似乎更加复杂......我追求的东西尽可能简单)

Sub GetSheets()
Path = "C:\test\"
Filename = Dir(Path & "*.txt")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub

最佳答案

前段时间我遇到了同样的问题,与你的第一个类似的约束:
- 由于引用指向那里,请保留工作表

但是我没有您的第二个约束,因此我无法判断它是否匹配 100% ;但是我很确定你可以解决它。我什至建议您对临时工作表执行导入查询,然后使用复制粘贴宏操作将您定义明确的范围移动到其最终目的地

我使用导入查询解决了它。我使用“宏记录器”来做“csv导入”;然后我重构了代码。

' @brief ImportFile : Opens specified file and imports contents at destination
' @param ImpFileName : Path to the file to import
' @param ImpDest : Location of the destination (must be a single cell range)

Private Sub ImportFile(ImpFileName As String, ImpDest As Range)
With ImpDest.Worksheet.QueryTables.Add(Connection:= _
"TEXT;" & ImpFileName, Destination:=ImpDest)
.Name = "Import"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 65001
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
' As the query execution does not trigger "content change event", we force triggering
' by editing the 1st cell's content.
Dim MyVal As Variant
MyVal = ImpDest.Cells(1, 1).Value
ImpDest.Cells(1, 1) = MyVal

End Sub

您可能希望更改某些查询选项以满足您的需要。

注意:最后三行用于修复错误(或看起来像错误的东西):查询执行不会触发裁判的“计算”事件。

关于vba - 将文本文件导入 xlsm,然后覆盖 sheetname(如果已存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com