很抱歉,我是VBA的新手。我要负责的工作是从Excel工作表中创建一个文本文档,该文档将由我们的销售人员填写,然后通过FTPd传输到我们的Orders应用程序。文本文件具有固定的布局,我遇到的是满足该格式的文件。例如,如果用户未在Excel单元格C3中填写日期,则我需要用六个空格填充文本文件,而不是跳过它们。
我尝试输入一个IF语句,在该语句中我将数据组合以将其写入文本文档,但是由于Application-Defined或Object-Defined错误而出错,这是一个非常普通的错误。
很抱歉,我们的拼凑而成的代码是我简单的想法所能想到的。如何获取所需的空间?
Sub CommandButton1_Click()
Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long
LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Range("Home").Select
CellData = ""
FilePath = "C:\Users\MN\Desktop\orders.txt"
Count = ActiveCell.Row - 1
Open FilePath For Output As #1
Do
Count = Count + 1
Range("A" & Count).Select
ITEMCD = ActiveCell.Value
If ITEMCD = "" Then
End
End If
CellData = ("26 ") & Format(ActiveCell.Value, "0000000") & _
ActiveCell.Offset(0, 1).Value & _
Format(ActiveCell.Offset(0, 2).Value, "MMDDYY") & _
ActiveCell.Offset(0, 1).Value & _
Format(ActiveCell.Offset(0, 2).Value, "MMDDYY")
Print #1, CellData
CellData = ""
Loop Until ActiveCell.Value = ""
Close #1
End Sub
答案 0 :(得分:0)
我不确定行
If ITEMCD = "" Then
End
End If
可能会导致结束代码而不关闭文本文件。可以尝试“结束做”。
我认为,对于Celldata
ActiveCell.Offset(0, 1).Value & _
Format(ActiveCell.Offset(0, 2).Value, "MMDDYY")
重复两次。如果是事实,并且第二列和第三列都应有日期,请按顺序尝试
CellData = ("26 ") & Format(ActiveCell.Value, "0000000") & _
IIf(IsEmpty(ActiveCell.Offset(0, 1).Value), " ", Format(ActiveCell.Offset(0, 1).Value, "MMDDYY")) & _
IIf(IsEmpty(ActiveCell.Offset(0, 2).Value), " ", Format(ActiveCell.Offset(0, 2).Value, "MMDDYY"))
答案 1 :(得分:0)
VBA代码未将NULL
或空白单元格解释为数值。因此,您必须执行以下操作:
Dim cellValue as Long
If Not IsNumeric(ActiveCell) Or IsEmpty(ActiveCell) Then
cellValue = 0
Else
cellValue = ActiveCell.Value
End If
CellData = ("26 ") & Format(cellValue, "0000000") & _
ActiveCell.Offset(0, 1).Value & _
Format(ActiveCell.Offset(0, 2).Value, "MMDDYY") & _
ActiveCell.Offset(0, 1).Value & _
Format(ActiveCell.Offset(0, 2).Value, "MMDDYY")