vba - 使用 Application.Workbooks.Open 打开 .txt 文件,但它会删除长数字
问题描述
我有这个脚本
Sub IMport()
Dim FileToOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range")
If FileToOpen <> False Then
Set OpenBook = Application.Workbooks.Open(FileToOpen)
OpenBook.Sheets(1).Range("B1:K200").Copy
ThisWorkbook.Worksheets("Hent Data").Range("B2").PasteSpecial xlPasteValues
OpenBook.Sheets(1).Range("A1:A200").Copy
ThisWorkbook.Worksheets("Hent Data").Range("A2").PasteSpecial Format:="Text"
End If
Application.ScreenUpdating = True
End Sub
我正在使用此脚本打开一个 txt 文件并将其复制到 Excel 工作表中。问题是A列中的数字是23个数字,所以当它在excel中打开时,很多数字都被删除了。
如何防止 Excel 截断大量数字?
更新:我犯了一个错误,并在我试图解决问题的地方发布了 VBA 脚本。真正的脚本是:
Sub IMport()
Dim FileToOpen As Variant
Dim OpenBook As Workbook
Application.ScreenUpdating = False
FileToOpen = Application.GetOpenFilename(Title:="Browse for your File & Import Range")
If FileToOpen <> False Then
Set OpenBook = Application.Workbooks.Open(FileToOpen)
OpenBook.Sheets(1).Range("A1:K200").Copy
ThisWorkbook.Worksheets("Hent Data").Range("A2").PasteSpecial xlPasteValues
End If
Application.ScreenUpdating = True
End Sub
解决方案
我一直在为此苦苦挣扎,因为我犯了一个愚蠢的错误,即生成可能有前导零的条形码编号。Excel 会切断数字的前导零,并不断破坏这些条形码数字。
我找到的解决方案是首先将未更改的值放入一个数组中,然后在值周围添加一个等号和引号,这样当它粘贴到 excel 中时,它是一个文字字符串,不能通过它们的数字格式来更改。
根据我的经验,仅将工作表编号格式设置为“@”是不够的,excel 仍会尝试删除数字的前导零,并仍尝试以科学计数法显示长数字。但是输入一个数字"=""" & number & """"
将迫使excel不这样做。
这是我为二维数组编写的函数:
Private Function ForceString(ByRef InputArr As Variant) As Variant
Dim OutputArr() As Variant
OutputArr = InputArr
Dim i As Long, j As Long
For i = LBound(OutputArr) To UBound(OutputArr)
For j = LBound(OutputArr, 2) To UBound(OutputArr, 2)
OutputArr(i, j) = "=""" & OutputArr(i, j) & """"
Next j
Next i
ForceString = OutputArr
End Function
推荐阅读
- r - 加速矩阵运算
- android - Android Emulator 无法在 react-native run-android 中运行我的应用
- apache-spark - 关闭分区发现 Spark
- javascript - 类对象方法声明React之间的区别?
- laravel - Laravel 关闭请求
- c# - 是什么导致了这个 System.InvalidCastException?
- java - Java在JFrame内绘制线性方程图
- javascript - 降级的 Angular 6 组件(到 AngularJS 1.6.9)不呈现 UI
- wordpress - 简单的 301 .htaccess 重定向在 Wordpress 上创建无限重定向
- python - tkinter.filedialog 上的官方文档