繁体   English   中英

在 Excel 文件宏的 Visual Basic 代码中取出额外的管道

Taking out extra pipes in Visual Basic code for excel file macro

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我创建了一个 excel 文件,其中包含一个可以执行多项操作的宏。 在图像中,您可以看到如何制作 excel 文件的外观。 用户将在第 12 行和第 13 行输入他们的数据。宏将运行并创建一个使用管道分隔符的记事本文件。 如您所见,它在文本的第一行创建了额外的管道 - 这就是我想要摆脱的。

Excel文件截图

电流输出

需要的输出

    Sub NewPipeFile()

    Dim IntialName As String
    Dim sFileSaveName As Variant
    IntialName = "Sample Output"
    sFileSaveName = Application.GetSaveAsFilename(InitialFileName:=InitialName, fileFilter:="Excel Files (*.xlsm), *.xlsm")

    If sFileSaveName <> False Then
        ActiveWorkbook.SaveAs sFileSaveName
    End If

    'Deletes instructions
    Rows("1:11").Select
    Range("A11").Activate
    Selection.Delete Shift:=xlUp

    'Deletes bottom 85 rows so end up with no blank lines
    Rows("14:14").Select
    ActiveWindow.SmallScroll Down:=90
    Rows("14:100").Select
    Selection.Delete Shift:=xlUp

    'Deletes comments, makes text black, etc
    Selection.Font.Bold = False
    With Selection.Font
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
    End With
    Selection.ClearComments



Const myDelim As String = "|"
Dim ws As Worksheet
Set ws = ActiveSheet
Dim r As Long, c As Long, i As Long, j As Long
r = ws.Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
c = ws.Cells.Find(What:="*", SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
Dim myPath As String
myPath = ThisWorkbook.Path & "\"
Dim myFile As String
myFile = myPath & Format(Now(), "yyyy-mm-dd--hh-mm-ss") & "PipeFile.txt"
Dim obj As Object
Set obj = CreateObject("ADODB.Stream")
obj.Type = 2
obj.Charset = "unicode"
obj.Open
Dim v() As Variant
ReDim v(1 To c)
For i = 1 To r
For j = 1 To c
v(j) = ws.Cells(i, j).Text
Next
obj.WriteText Join(v, myDelim), 1
Next
obj.SaveToFile myFile, 2
Dim Npad
Npad = Shell("C:\WINDOWS\notepad.exe " & myFile, 1)
End Sub
1 个回复

像这样循环:

For i = 1 To r
  c = ws.Cells(r,ws.columns.count).end(xlToLeft).column
  Dim v as Variant
  v = ws.Range(ws.Cells(r,1),ws.Cells(r,c)).Value
  objWriteText Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(v)), myDelim), 1
Next

我在这里使用转置,因为列列表是相对较少的列(因此不会影响速度)。 我使用它两次,因为它是基于列的。 所以第一个转置是让它基于行,第二个是使它成为 1D,因为范围默认为 2D 数组。

1 Visual Basic Excel宏

我想在Excel中有一个Macro。 宏应该从A1取一个双数,然后将此数字乘以5,然后将其返回A1,但我总是收到错误消息等。 到目前为止,我的代码: 我以前没有与VBA合作过。 ...

2 excel中的Visual Basic代码

这是我的表: 我想从原始表中搜索数据,然后根据日期和品牌在选定的m1,m2,m3,问题,浪费,额外,重新包装字段中输入数据。 这里的问题是我的桌子没有按照我的需要摆放。 这里我的代码没有更新所选日期的品牌'b'的数据。 这是我的代码: ...

3 Excel宏中的Visual Basic全局变量

我在VB上为Excel编写宏。 有一个结构: 在Form1中,我有Button单击事件 在主要我有程序测试 我该如何实施? 我无法创建 由于Excel不支持此构造! ...

4 更新Excel Visual Basic电子表格生成器宏

我使用以下宏拆分电子表格并将拆分保存到单个文件中: 我想在while循环中添加一些代码,以将数据格式化为表格,例如Medium15。我知道代码必须在save语句之前进入循环,但我无法弄清楚,因为我对VBA真的很陌生,并且我正在修改其他人创建的宏,而我们刚刚使用了死记硬背。 我们的目标是 ...

2019-01-08 19:32:09 1 18   excel/ vba
5 为Excel Visual Basic创建字符串编辑宏

我需要帮助,在Visual Basic中为Excel创建一个字符串编辑宏。 我将描述我需要做的事情,但是如果不可能给出完整的答案,那么任何少量的信息都会对我有所帮助。 我正在创建重定向列表以导入网站。 在我的Excel工作表的A列中,我有3500个网址 ,如下所示:http://www.r ...

6 在visual basic excel宏中截断字符串

我有一列数据,其中包含不同长度的字符串,用逗号分隔。 以下是一些示例: 第一行:史密斯先生、詹姆斯纽、保罗西蒙第 2 行:克雷格大卫第 3 行:史蒂文·史密斯、卢克·奥康纳、菲利普第 4 行:尼尔,瑞恩夫人第 5 行:xyz、abc 我需要编写一个宏来自动删除单元格中除最后一个字符串之外的所有 ...

7 隐藏工作表上的Excel / Visual Basic宏

我已经编写了一个宏,该宏接受一些源数据并将其写入到几张纸上,这些ID希望在宏运行之前和之后保持隐藏状态。 编写宏后,当我运行它时,它只更新每张纸上的几条记录(例如,在第一个隐藏的工作表上,它更新了1000条记录中的21行。这是什么原因呢?他们都没有?我也没有收到任何错误。我尝试过 但是 ...

2013-01-22 10:46:46 2 1613   excel/ vba
10 Visual Basic Excel宏-循环麻烦

我是Visual Basic的新手,我试图查看一个值是否不是另一个值。 这是我的代码: 问题是它给我一个错误: 我不确定这是问题所在。 我也尝试过这样: (不带())那么,我想知道为什么它会给我带来语法错误,并且我该怎么做才能比较两个值? 无论如何,谢谢! ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM