Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel自定义格式添加";前后记录_Vba_Excel_Formatting - Fatal编程技术网

Vba Excel自定义格式添加";前后记录

Vba Excel自定义格式添加";前后记录,vba,excel,formatting,Vba,Excel,Formatting,我想在excel中的记录之前添加“。我还想在每条记录之后添加”| 我在VBA中使用自定义格式 我的格式是“\”“@\\” 我的结果是 """1111""|" """Noel Gallagher""|" | """Individual""|" """Employee""|" """111""|" """Main Road""|" """Town""|" """""|" """County"|" """City""|" | | | | | | |

我想在excel中的记录之前添加

我还想在每条记录之后添加
”|

我在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