Vba Excel自定义格式添加";前后记录
我想在excel中的记录之前添加Vba Excel自定义格式添加";前后记录,vba,excel,formatting,Vba,Excel,Formatting,我想在excel中的记录之前添加“。我还想在每条记录之后添加”| 我在VBA中使用自定义格式 我的格式是“\”“@\\” 我的结果是 """1111""|" """Noel Gallagher""|" | """Individual""|" """Employee""|" """111""|" """Main Road""|" """Town""|" """""|" """County"|" """City""|" | | | | | | |
“
。我还想在每条记录之后添加
”|
我在VBA中使用自定义格式
我的格式是“\”“@\\”
我的结果是
"""1111""|" """Noel Gallagher""|" | """Individual""|" """Employee""|" """111""|" """Main Road""|" """Town""|" """""|" """County"|" """City""|" | | | | | | | | | | | | | | | """IE""|" """AAA""|" """Value""|"
我需要
"1111"| "Noel Gallagher"|""|"Individual"|"Employee"|"111"|"Main Road"|"Town"|""|"County"|"City"|""|""|""|""|""|""|""|""|""|""|""|""|""|""|""|"IE"|"AAA"|"Value"|
我似乎无法通过自定义格式获得正确的结果。有其他解决方案吗?自定义格式的\“@\”应该这样做吗
所以在vba中。。这将是:
范围(“xxx:yyy”).NumberFormat=“\”“@\”“\124;”警告下面的代码将更改单元格内容,而不是对单元格应用格式。因此,带有公式的单元格将转换为文本 目前,它将在所有当前选定的单元格上运行,但如果需要,可以将其更改为在特定范围内运行
Sub add_quotes_and_pipe_to_selected_cells()
vbQt = """"
Dim rng As Range
Set rng = Selection ' or this could be a range such as = range("A2:X50")
For Each c In rng.Cells
c.Cells(1, 1) = vbQt & c.Cells(1, 1).Text & vbQt & "|"
Next
Set rng = Nothing
End Sub
现在我对你的问题有了更好的理解,下面的代码应该会告诉你你想要什么 这将获取所选范围并将其导出(使用文本限定符和分隔符要求)到x-drive上名为
outputfile.txt
的文件中。根据需要更改此选项。这意味着您不需要使用Excel保存文件,这一切都是在宏中完成的
我假设您不想/不需要文件每行的最后一根管道。如果情况并非如此,并且是必需的,请删除将其剥离的行(如果正确,则会启动(outputline,1)…
)
它不应该是
“\@”\“\124;”
?我在excel中尝试过,但没有任何效果。VBA还抛出了一个类型不匹配错误。请尝试:MsgBox Chr(34)和Join(Application.Transpose(Range)(“A1:A40”).Value)、Chr(34)和“|”&Chr(34”)
如果效果很好,我将如何将其构建到Range(“a:a,B:B,D:D,E:E,G:G,H,I:I,J1,J:J,K,AB:AB,AC,AC:AD”)。选择Selection.NumberFormat=“\”“”那还不能满足我的需要。空白单元格没有被格式化,额外的引号被添加到hanks中,这似乎是可行的。当我把它作为一个.txt文件打开时,我得到了一对额外的引号。你知道这是为什么吗?@E_McAndrew-那么,说清楚,你可能正在将文件保存为CSV,然后在记事本中检查它?也许你可以充分解释一下你想要实现的目标,也许有更好的解决方案。我必须修改和编辑一个文件,然后将结果保存为文本文件。我需要文本文件中的“|”。我现在正处于excel文件正确无误的阶段,但正是以文本文件的形式打开的文件引起了问题。@E_McAndrew-我已经创建了另一个答案,该答案应该能准确地告诉您您想要什么。
Sub export_range_with_quotes_and_pipe()
vbQt = """"
delim = "|"
exportfilename = "x:\outputfile.txt"
Dim rng As Range
Set rng = Selection ' or this could be a range such as = range("A2:X50")
ff = FreeFile
'create text file for output
Open exportfilename For Output As ff
'read each row from range
For Each r In rng.Rows
outputline = ""
'read each cell in row R
For Each c In r.Cells
'build outputline from each cell in row R
outputline = outputline & vbQt & c.Cells(1, 1).Text & vbQt & delim
Next
'strip last pipe delimiter as not required
If Right(outputline, 1) = delim Then outputline = Left(outputline, Len(outputline) - 1)
'send outputline to file
Print #ff, outputline
Next
' close file
Close ff
Set rng = Nothing
End Sub