- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
IO想要检查路径主目录/ABC*/Y/XY*/*.edf下的所有edf文件,然后检查文件中是否有特定短语,如果找到则检查另一个短语等,然后填写电子表格中的数据。我尝试通过三种方法来实现这一目标,但每种方法都在某些时候陷入困境。你们中的任何人都可以通过代码并告诉我哪里错了以及哪种方法是最好的(如果有的话)。由于我之前的问题造成了误解,我不希望任何人为我编写代码。我已经开始学习 vba 三天了,我有 5 天的时间来完成这个项目。这就是为什么如果有人能看一下并告诉我哪里出错了,我将不胜感激。
通过简单目录命令的方法1在此,FCS* 的第一个循环工作得很好,但第二个循环根本不起作用,并在第一次迭代时给出运行时错误。我知道这不是一个好方法,但以防万一其他方法不起作用。
Sub Iterate_Folders()
Dim ctr As Integer
Dim ctr1 As Integer
ctr = 1
ctr1 = 1
Paths = "C:\Users\sobiakanwal\Downloads\QSHWRA\QSHWRA\ " ' Path should always contain a '\' at end
FirstDir = Dir(Paths, vbDirectory) ' Retrieving the first entry.
Do Until FirstDir = "" ' Start the loop.
If (FirstDir Like "FCS*") Then
ActiveSheet.Cells(ctr, 15).Value = Paths & FirstDir
Path1 = Paths & FirstDir & "\FUNCTION_BLOCK\DR*"
ActiveSheet.Cells(ctr, 20).Value = Path1
'ActiveSheet.Cells(ctr, 25).Value = SecondDir
SecondDir = Dir(Path1, vbDirectory)
Do While SecondDir = ""
ActiveSheet.Cells(ctr, 30).Value = "Hi"
If (True) Then
ctr1 = ctr1 + 1
End If
SecondDir = Dir()
Loop
ctr = ctr + 1
Else
End If
FirstDir = Dir() ' Getting next entry.
Loop
MsgBox (ctr1)
End Sub
通过递归的方法 2我在教程中找到了这方面的基本代码,然后根据我的优势对其进行了一些编辑。这通常不起作用,但以某种硬编码的方式给出了正确的答案。但我希望你检查一下我陷入递归函数的地方,我需要在其中添加文件处理代码。
Public temp() As String
Public Count As Integer
Function ListFiles(FolderPath As String)
Dim myFile As String, text As String, textline As String, posLat As Integer, posLong As Integer
Dim k As Long, i As Long
ReDim temp(2, 0)
Count = 1
If Right(FolderPath, 1) <> "\" Then
FolderPath = FolderPath & "\"
End If
Recursive FolderPath
k = Range(Application.Caller.Address).Rows.Count
If k < UBound(temp, 2) Then
MsgBox "There are more rows, extend user defined function"
Else
For i = UBound(temp, 2) To k
ReDim Preserve temp(UBound(temp, 1), i)
temp(0, i) = ""
temp(1, i) = ""
temp(2, i) = ""
Next i
End If
ListFiles = Application.Transpose(temp)
ReDim temp(0)
End Function
Function Recursive(FolderPath As String)
Dim strFilename As String
Dim strFileContent As String
Dim iFile As Integer
Dim fileName As String, textData As String, textRow As String, fileNo As Integer
Dim Value As String, Folders() As String
Dim Folder As Variant, a As Long
Dim Right_FolderPath As String
ReDim Folders(0)
If Right(FolderPath, 2) = "\\" Then Exit Function
Value = Dir(FolderPath, &H10)
Do Until Value = ""
If Value = "." Or Value = ".." Then
Else
If GetAttr(FolderPath & Value) = 16 Then
Folders(UBound(Folders)) = Value
ReDim Preserve Folders(UBound(Folders) + 1)
Else
If Right(Value, 4) = ".edf" Then
If Count = 4 Then
Right_FolderPath = Right(FolderPath, 7)
If Left(Right_FolderPath, 2) = "DR" Then
strFilename = FolderPath & Value
iFile = FreeFile
Open strFilename For Input As #iFile
strFileContent = Input(LOF(iFile), iFile)
Close #iFile
If InStr(1, strFileContent, "hihowareyou") <> 0 Then
ActiveSheet.Cells(1, 1) = strFilename
longLoc = InStr(1, strFileContent, "Longitude:")
If longLoc <> 0 Then
ActiveSheet.Cells(1, 2) = Mid(strFleContent, longLoc + Len("Longitude:"), 10)
End If
End If
''''Here it goes all wrong
'myFile = FolderPath & Value
'myFile = Application.GetOpenFilename()
'fileNo = FreeFile 'Get first free file number
'Open fileName For Input As #fileNo
'Do While Not EOF(fileNo)
' Line Input #fileNo, textRow
' textData = textData & textRow
'Loop
'Close #fileNo
'posLat = InStr(text, "ff-ai")
'If Not posLat = vbNullString Then
' temp(0, UBound(temp, 2)) = Value
'End If
temp(0, UBound(temp, 2)) = FolderPath
temp(1, UBound(temp, 2)) = Value
temp(2, UBound(temp, 2)) = Count ' FileLen(FolderPath & Value)
ReDim Preserve temp(UBound(temp, 1), UBound(temp, 2) + 1)
End If
End If
End If
End If
End If
Value = Dir
Loop
For Each Folder In Folders
Count = Count + 1
Recursive FolderPath & Folder & "\"
Count = Count - 1
Next Folder
End Function
字典对象的第三种方法这是由 Stock Overflow 上的某人建议的,对他来说很有效,但对我来说则不然。我不太懂vba,无法调试它。
Sub build_FolderLevels(dFMs As Scripting.Dictionary, _
Optional sFM As String = "", _
Optional iFLDR As Long = 0)
Dim d As Long, fp As String, vFMs As Variant
If CBool(dFMs.Count) Then
vFMs = dFMs.Keys
For d = LBound(vFMs) To UBound(vFMs)
vFMs(d) = vFMs(d)
Next d
Else
vFMs = Array(sFM)
End If
dFMs.RemoveAll
For d = LBound(vFMs) To UBound(vFMs)
fp = Dir(vFMs(d), iFLDR)
Do While CBool(Len(fp))
dFMs.Add Key:=Left(vFMs(d), InStrRev(vFMs(d), Chr(92))) & fp, _
Item:=iFLDR
fp = Dir
Loop
Next d
结束子
Sub main()
Dim fm As Long, sFM As String, vFMs As Variant, sMASK As String
Dim fn As Variant, dFNs As New Scripting.Dictionary
sFM = Environ("TMP") & "\QSHWRA\FCS*\FUNCTION_BLOCK\DR*\*.edf"
If UBound(Split(sFM, Chr(42))) < 2 Then Exit Sub '<~~possibly adjust this safety
sFM = Replace(sFM, "/", "\")
vFMs = Split(sFM, Chr(92))
sMASK = vFMs(LBound(vFMs))
For fm = LBound(vFMs) + 1 To UBound(vFMs)
sMASK = Join(Array(sMASK, vFMs(fm)), Chr(92))
If CBool(InStr(1, vFMs(fm), Chr(42))) Or fm = UBound(vFMs) Then
build_FolderLevels dFNs, sFM:=sMASK, iFLDR:=Abs((fm < UBound(vFMs)) * vbDirectory)
sMASK = vbNullString
End If
Next fm
'list the files
For Each fn In dFNs
Debug.Print "from dict: " & fn
Next fn
dFNs.RemoveAll: Set dFNs = Nothing
End Sub
最佳答案
我建议您浏览主目录下的所有子文件夹,只收集符合您条件的文件。我可能会使用 WindowsShell 和诸如 Dir MainFolder\*.edf/B/S
(裸格式和递归开关设置)之类的东西,然后只保存或收集所需子文件夹中的那些文件。但您也可以使用 DIR 或 FileSystemObject 和递归执行类似的操作。
关于excel - 这是选择性循环 excel vba 中目录的最佳方法(如果有的话),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34355650/
根据这个: Selectivity is the value between 0 and 1, and it is the fraction of rows returned after applyi
我想知道C是否允许设置选择性#define。这就是我所说的选择性:如果我定义了一个结构: typedef struct mystruct{ int (*pointer_function)(struc
我正在尝试替换 pi与 math.pi使用以下 Python 函数。 def cleanup(x): return x.replace("pi", "math.pi") 我有以下字符串: a =
有没有一种方法可以只对类型声明可用的代码执行流程检查? 有一种方法可以启用每个文件的检查( header 中的 //@flow),但是一旦设置,代码的所有部分都需要类型声明(否则会记录错误,如“108
我在 openGL (openGl 1.1 win32) 中绘制了一个场景。 我使用 glClipPlane 隐藏前景对象以允许用户查看/编辑距离部分。选择是在 native 完成的,无需使用 ope
我正在开发允许第三方上传 HTML 片段的服务。在其中一些片段中,可能有指向 CSS 文件或内联 CSS 的链接。该服务有自己的 CSS 文件。 除了 iFrame 之外,还有什么方法可以让我指示特定
假设我有下面列出的用于通过 Web 服务将数据传递给客户端的类(类已简化): public class Customer { public int CustomerId { get; set;
我肯定有一个相当普遍的文档需求...... 我正在实现一个相当大的 Java 库代码库,除其他外,它包含各种类,这些类旨在在适当的抽象级别上公开给调用者/实现者。同时,代码库当然包含库的用户在使用 A
我有我的小 program.jar,它使用了巨大的 library.jar 的一小部分。 是否有一种工具可以将几个 jar 重新打包成一个,以便它可以独立运行并且尽可能小? 更新:大小很重要。 最佳答
如何为站点的某些部分强制使用 HTTPS,例如登录页面或注册页面,并为站点的其余部分使用 HTTP? 最佳答案 我最喜欢的强制转换为 https 的方法是将其作为您的 php 脚本中的第一件事。它适用
我一直在慢慢学习 Ruby(在这一点上,这可能是我投入大量时间实际学习的第一门语言)所以这对你们中的许多人来说可能是一个非常简单的问题。 我的学习玩具项目基本上是一个 roguelike。目前,我有一
我正在使用Liip Cache Control bundle处理项目中的缓存。通过使用此捆绑包,您可以像这样配置缓存: liip_cache_control: rules: -
在上个月的某个时候,一个随机网站决定在一个框架中为我公司的网站提供服务。忽略“他们在做什么?”的问题。一分钟,我使用了一些简单的 frame-buster Javascript: if (top.l
假设我有以下 Numpy 数组: array([[3, 5, 0], [7, 0, 2]]) 我现在想在值不为 0 的地方加 2。最快的方法是什么?我必须操纵相当大的多维数组? 最佳答案 在我看来:
我是 git 的新手,我正尝试在 Github 项目上进行协作。我 fork 了一个项目,添加了功能,并根据自己的需要移植到了 Android。添加的功能需要在基础项目中,而不是 android 相关
在以下两个命令中,第二个抛出异常说“未知编解码器 libfdk_aac”。谁能指出我,可能是什么问题? $> ffmpeg -loglevel verbose -re -i /var/mp4s/tes
我正在尝试 nvidia 的展开循环指令,但还没有找到有选择地打开它的方法。 假设我有这个... void testUnroll() { #pragma optionNV(unroll all
我们公司最近开始使用git-flow,我们遇到了以下问题: 我们有一个控制应用程序日志级别的 DEV_MODE bool 值,我们希望开发分支始终具有 DEV_MODE=true。 但是,在发布版本时
我试图在我的 DataFrame df 中删除 nan 值,但是我很难在不影响整行的情况下删除每一列。下面是我的 df 示例。 Advertising No Advertising nan
我已将播放服务更新到最新版本,目前为 9.2.0,我还想为谷歌播放服务使用选择性模块。 // compile 'com.google.android.gms:play-services:9.2.
我是一名优秀的程序员,十分优秀!