小编L42*_*L42的帖子

在VBA中逐行读取/解析文本文件

我正在尝试使用VBA解析文本文档并返回文本文件中给出的路径.
例如,文本文件看起来像:

*Blah blah instructions
*Blah blah instructions on line 2
G:\\Folder\...\data.xls
D:\\AnotherFolder\...\moredata.xls
Run Code Online (Sandbox Code Playgroud)

我希望VBA一次加载1行,如果它以a开头,*则移动到下一行(类似于被注释的那行).对于带有文件路径的行,我想将该路径写入单元格,例如A2第一条路径,B2下一条路径等.

我希望回答的主要内容是:
1.使用VBA读取文本文件的最佳/简单方法是什么?
2.我该如何逐行完成?

excel vba excel-vba

52
推荐指数
3
解决办法
34万
查看次数

为什么有集合时在VBA中使用数组?

许多人在Excel/VBA中使用大量数组来存储数据列表.但是,在我看来,收集对象更方便(主要是:不需要重新定义列表的长度).

所以,我真诚地问自己,我是否遗漏了什么?为什么其他人仍然使用数组来存储数据列表?这只是过去的宿醉吗?

arrays excel vba excel-vba

40
推荐指数
2
解决办法
6万
查看次数

如何检查单元格是否包含通配符星号(*)字符

考虑以下两个公式:

=IF(SEARCH("*", A1), "true", "false")

=IF(SEARCH(CHAR(42), A1), "true", "false")
Run Code Online (Sandbox Code Playgroud)

我正在使用它来尝试检测一个单元格是否包含一个*字符,但是对于所有单元格都返回"true".我只能假设Excel看起来*像一个通配符.

你如何检测*Excel中是否存在?

excel excel-formula

14
推荐指数
1
解决办法
3万
查看次数

选择表格中的最后一条记录

如何MAX(id)从表中选择最后一条记录(即拥有)?
Next语句工作正常,但选择第一条记录:

$statistics = SystemStatisticsHistory::findOne(1); 
Run Code Online (Sandbox Code Playgroud)

php mysql yii2

10
推荐指数
1
解决办法
2万
查看次数

使用多列添加列表框中的项目

如何在列表中添加项目2 columns?如果我使用它,它会在第一列中添加项目ListBox.AddItem.我也想添加项目2nd column.谢谢!

excel vba excel-vba

7
推荐指数
1
解决办法
11万
查看次数

使用VBScript调用Outlook过程

我在Outlook中有一个过程,它将所有已保存的消息发送到Drafts文件夹中.
以下是代码:

Public Sub SendMail()

Dim olApp As Outlook.Application
Dim olNS As Outlook.NameSpace
Dim olFolder As Outlook.MAPIFolder
Dim olDraft As Outlook.MAPIFolder
Dim strfoldername As String
Dim i As Integer

Set olApp = Outlook.Application
Set olNS = olApp.GetNamespace("MAPI")
Set olFolder = olNS.GetDefaultFolder(olFolderInbox)

strfoldername = olFolder.Parent

Set olDraft = olNS.Folders(strfoldername).Folders("Drafts")

If olDraft.Items.Count <> 0 Then
    For i = olDraft.Items.Count To 1 Step -1
        olDraft.Items.Item(i).Send
    Next
End If

End Sub
Run Code Online (Sandbox Code Playgroud)

以上代码工作正常.

题:

我想用它Task Scheduler来指定这个程序.
1.我将把程序放在Outlook,Module或ThisOutlookSession中?
2.我不擅长,vbscript所以我也不知道如何编写代码来调用Outlook程序.我已经完成了调用Excel Procedure但Outlook不支持 …

vbscript vba outlook-vba

7
推荐指数
1
解决办法
1万
查看次数

使用VBA更改数据透视表过滤器

我有一个数据透视表,其中包含"CoB Date"字段,如图所示.
我正在尝试创建一个宏,根据用户输入自动更改日期.
我写了以下宏代码.但它显示错误:

无法获取数据透视表类的PivotFields属性

谁能帮我这个?
注意:假设日期格式不是问题

码:

Sub My_macro()
    Dim num as String
    num = InputBox(Prompt:="Date", Title:="ENTER DATE")
    Sheets("Sheet1").PivotTables("PivotTable1") _
        .PivotFields("CoB Date").CurrentPage = num
End Sub
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

excel vba excel-vba excel-addins

7
推荐指数
1
解决办法
4万
查看次数

在不改变参考表中的项目序列的情况下拉取数据

我想查找临时表中列出的值:

那么让我们说:

Create Table #mylist
(
eserial nvarchar(35) Collate SQL_Latin1_General_CP850_CI_AS,
refdate datetime
)

Insert Into #mylist (eserial, refdate) Values ('A', '2015-09-15')
Insert Into #mylist (eserial, refdate) Values ('B', '2015-09-14')
Insert Into #mylist (eserial, refdate) Values ('C', '2015-09-13')
Insert Into #mylist (eserial, refdate) Values ('D', '2015-09-12')
Run Code Online (Sandbox Code Playgroud)

我需要结果是Top 1小于参考日期的日期.
并且应该以与临时表中相同的顺序返回.

我尝试了什么:

Select
    lst.eserial,
    lst.refdate,
    app.CREATEDDATETIME,
From #mylist lst
Outer Apply 
    (Select Top 1 rec.CREATEDDATETIME, rec.ESERIAL, rec.ITEMID
     From TableSource rec
     Where lst.eserial=rec.ESERIAL And rec.CREATEDDATETIME<lst.refdate
     Order By rec.CREATEDDATETIME Desc
    ) As app …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2008-r2

6
推荐指数
1
解决办法
280
查看次数

在打开的单元格中显示Excel帐户用户名

使用Office 2013,我试图插入VBA代码以自动输入员工姓名,因为它在任何Office产品的右上角显示在B2打开excel电子表格的单元格中.我正在使用的当前代码是

Sub Auto_Open()

    Range("B2").Value = " " & Application.UserName

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这只是使其显示"授权用户".
我究竟做错了什么?

在此输入图像描述

excel vba ms-office excel-vba

6
推荐指数
1
解决办法
2204
查看次数

如何根据特定单元格的值插入行?

我是VBA的新手,并且正在努力开展一个工作项目,我为我缺乏知识而道歉,但我真的试图为老板指出这一点.

我想要完成的工作如下:我有一个从H2开始并转到H200的数字列表,每个数字范围从1到150.

我正在尝试编写一个宏,在每个数字下插入行,其数量与数字相同.(例如,如果数字为42,则在其下创建42行.然后说它下面的数字是13,那么将有13行......依此类推).

现行代码:

Sub InsertRow()

    i = 2
    count = Cells(i, H).Value

    Range("B2").EntireRow.Insert
    Range("B2").EntireRow.Resize(count).Insert shift:=xlDown

End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

6
推荐指数
2
解决办法
152
查看次数