在VBA生成的工作簿中创buildUDF

我在VBA中构build一个应用程序来parsing机器生成的文件。 作为这个项目的一部分,我需要将数据转换为整数,因为固定宽度的列不包含负数。 我用macroslogging器来parsing文本文件:

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 

但是这会创build一个新的工作簿,因为它正在打开一个新文件。 问题是我需要在将固定宽度值转换为整数的最后一列上运行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可用于新的工作簿? 无论是直接复制function代码到新的工作簿的模块使用VBA不知何故或只是访问原代码? 或者有没有办法打开当前工作簿中的文本文件?

这需要是可移植的,因此使用个人工作簿不是一种select。

logging一个macros,并使用Data-> From Text来导入你的文本文件。 这将导入您当前的工作簿。