我正在尝试使用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中使用大量数组来存储数据列表.但是,在我看来,收集对象更方便(主要是:不需要重新定义列表的长度).
所以,我真诚地问自己,我是否遗漏了什么?为什么其他人仍然使用数组来存储数据列表?这只是过去的宿醉吗?
考虑以下两个公式:
=IF(SEARCH("*", A1), "true", "false")
=IF(SEARCH(CHAR(42), A1), "true", "false")
Run Code Online (Sandbox Code Playgroud)
我正在使用它来尝试检测一个单元格是否包含一个*
字符,但是对于所有单元格都返回"true".我只能假设Excel看起来*
像一个通配符.
你如何检测*
Excel中是否存在?
如何MAX(id)
从表中选择最后一条记录(即拥有)?
Next语句工作正常,但选择第一条记录:
$statistics = SystemStatisticsHistory::findOne(1);
Run Code Online (Sandbox Code Playgroud) 如何在列表中添加项目2 columns
?如果我使用它,它会在第一列中添加项目ListBox.AddItem
.我也想添加项目2nd column
.谢谢!
我在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不支持 …
我有一个数据透视表,其中包含"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)
我想查找临时表中列出的值:
那么让我们说:
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) 使用Office 2013,我试图插入VBA代码以自动输入员工姓名,因为它在任何Office产品的右上角显示在B2
打开excel电子表格的单元格中.我正在使用的当前代码是
Sub Auto_Open()
Range("B2").Value = " " & Application.UserName
End Sub
Run Code Online (Sandbox Code Playgroud)
但是,这只是使其显示"授权用户".
我究竟做错了什么?
我是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 ×7
vba ×7
excel-vba ×6
arrays ×1
excel-addins ×1
ms-office ×1
mysql ×1
outlook-vba ×1
php ×1
sql ×1
sql-server ×1
vbscript ×1
yii2 ×1