在 VBA 个生成的工作簿中创建 UDF
Create UDF in VBA Generated Workbook
我正在 VBA 构建一个应用程序来解析机器生成的文件。作为该项目的一部分,我需要将机器格式转换为整数,因为固定宽度的列不能容纳负数。我使用宏记录器解析文本文件:
Workbooks.OpenText Filename:= _
*FILE NAME HERE*, Origin:= _
437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), _
Array(6, 2), Array(10, 2), Array(14, 2), Array(19, 2), Array(25, 2), Array(27, 2), Array(34 _
, 2), Array(39, 2), Array(43, 2), Array(44, 2), Array(52, 2)), TrailingMinusNumbers:= _
True
但这会创建一个新工作簿,因为它打开了一个新文件。问题是我需要在最后一列 运行 一个 UDF,将固定宽度值转换为整数。例如,假设最后一列是
0000000E
我知道 E 表示最后一位是 5 并且数字是负数。我的 UDF 对此进行了相应的转换:
Public Function ConvertCodeToInteger(inputString As String) As Long
If inputString <> vbNullString Then
Select Case Right(inputString, 1)
Case "E" 'Negative 5
ConvertCodeToInteger = -1 * (Left(inputString, Len(inputString) - 1) & 5)
Case Else 'Error Case'
MsgBox ("An error has occurred.")
End
End Select
Else
ConvertCodeToInteger = vbNullString
End If
End Function
Private Sub TESTConvertCodeToInteger()
Debug.Print ConvertCodeToInteger("000001E")
End Sub
但是由于文件是在新工作簿中打开的,所以我无法访问我的 UDF。有没有一种简单的方法可以使用 VBA 使 UDF 可用于新工作簿?是通过以某种方式使用 VBA 直接将功能代码复制到新工作簿的模块中,还是只是访问原始代码?或者有没有办法在当前工作簿中打开文本文件?
这需要便携,因此不能选择使用个人工作簿。
录制一个宏并使用数据->来自文本来导入您的文本文件。这将导入您当前的工作簿。
我正在 VBA 构建一个应用程序来解析机器生成的文件。作为该项目的一部分,我需要将机器格式转换为整数,因为固定宽度的列不能容纳负数。我使用宏记录器解析文本文件:
Workbooks.OpenText Filename:= _
*FILE NAME HERE*, Origin:= _
437, StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), _
Array(6, 2), Array(10, 2), Array(14, 2), Array(19, 2), Array(25, 2), Array(27, 2), Array(34 _
, 2), Array(39, 2), Array(43, 2), Array(44, 2), Array(52, 2)), TrailingMinusNumbers:= _
True
但这会创建一个新工作簿,因为它打开了一个新文件。问题是我需要在最后一列 运行 一个 UDF,将固定宽度值转换为整数。例如,假设最后一列是 0000000E 我知道 E 表示最后一位是 5 并且数字是负数。我的 UDF 对此进行了相应的转换:
Public Function ConvertCodeToInteger(inputString As String) As Long
If inputString <> vbNullString Then
Select Case Right(inputString, 1)
Case "E" 'Negative 5
ConvertCodeToInteger = -1 * (Left(inputString, Len(inputString) - 1) & 5)
Case Else 'Error Case'
MsgBox ("An error has occurred.")
End
End Select
Else
ConvertCodeToInteger = vbNullString
End If
End Function
Private Sub TESTConvertCodeToInteger()
Debug.Print ConvertCodeToInteger("000001E")
End Sub
但是由于文件是在新工作簿中打开的,所以我无法访问我的 UDF。有没有一种简单的方法可以使用 VBA 使 UDF 可用于新工作簿?是通过以某种方式使用 VBA 直接将功能代码复制到新工作簿的模块中,还是只是访问原始代码?或者有没有办法在当前工作簿中打开文本文件?
这需要便携,因此不能选择使用个人工作簿。
录制一个宏并使用数据->来自文本来导入您的文本文件。这将导入您当前的工作簿。