小编tyr*_*rex的帖子

使用VBA循环文件夹中的文件?

我想在Excel 2010中使用循环遍历目录的文件.

在循环中,我将需要

  • 文件名,和
  • 文件格式化的日期.

我编写了以下代码,如果该文件夹没有超过50个文件,则工作正常,否则它是非常慢的(我需要它与> 10000文件的文件夹一起使用).这段代码唯一的问题是查找操作file.name需要花费很多时间.

代码有效,但waaaaaay太慢(每100个文件15秒):


Sub LoopThroughFiles()
   Dim MyObj As Object, MySource As Object, file As Variant
   Set MySource = MyObj.GetFolder("c:\testfolder\")
   For Each file In MySource.Files
      If InStr(file.name, "test") > 0 Then
         MsgBox "found"
         Exit Sub
      End If
   Next file
End Sub
Run Code Online (Sandbox Code Playgroud)

问题解决了:

  1. 我的问题已通过以下解决方案Dir以特定方式(15000个文件为20秒)和使用该命令检查时间戳来解决FileDateTime.
  2. 考虑到下面的另一个答案,20秒减少到不到1秒.

excel vba excel-2010

224
推荐指数
5
解决办法
60万
查看次数

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

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

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

arrays excel vba excel-vba

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

Excel VBA编辑器的替代方案?

是否可以使用常用的Excel VBA编辑器,可以使用Excel中的Alt + F11进行访问?

我更喜欢Visual Studio IDE,例如我在C#中开发的时候.它的一个不足之处包括一个简单的事实,即没有键盘快捷键来停止调试过程,尽管我觉得Excel VBA编辑器还存在其他问题.

ide excel vba editor

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

将VBA中的类型设置为空?

我已经定义了一个具有自己类型的变量

Dim point As DataPoint

Public Type DataPoint
   list as Collection
   name as String
   number as Integer
End Type
Run Code Online (Sandbox Code Playgroud)

我想point一次删除变量的所有值.如果它是一个类,我会使用Set point = New DataPoint或设置Set point = Nothing,但如果它是一个类型我该怎么办?

variables vba object user-defined-types

20
推荐指数
3
解决办法
2万
查看次数

如何在Excel VBA监视窗口中监视字典中的值?

我在Excel VBA中使用词典dict As New Dictionary(并添加对脚本运行时的引用).当我在调试期间尝试监视这些时,我只能看到字典中的键,而不是每个键的相应值.

有没有办法看到这个价值?它会让调试变得更容易.

编辑:根据您的答案,没有简单的解决方案,但我可以做到以下几点.

使用全局变量Dim d_obj As Object并持续监视它,每当我需要查找字典的值时,我键入立即窗口Set d_obj(key) = ...,我将能够在监视器窗口中看到该值.

我还可以做的是编写一个函数,它接收字典并将值作为列表返回,并在直接窗口中类似地使用此函数.对所有人来说!

excel vba ms-office excel-vba access-vba

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

使用 TextFileColumnDataTypes 打开每列具有正确数据格式的 CSV 文件?

我正在使用下面的 VBA 代码在 Excel 中打开 csv 文件(该代码模拟 Data\Text to Columns - 命令)。在代码中,需要为属性TextFileColumnDataTypes指定一个数组,该数组为 csv 文件中的每一列指定数据格式(2 = 文本格式)。

但是,由于我不知道 csv 文件将有多少列,因此我想为 csv 文件中的所有列指定格式 2(= 文本格式)。现在的问题是我只能指定固定数量的列的数据格式(在下面的示例中为 3 列)。

非常感谢任何解决该问题的帮助:)

=================================================

这是我正在使用的完整代码:


    With ThisWorkbook.Worksheets(1).QueryTables.Add(Connection:= _
        "TEXT;C:\test.csv", Destination _
        :=ThisWorkbook.Worksheets(1).Range("$A$1"))
        .name = "Query Table from Csv"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow …
Run Code Online (Sandbox Code Playgroud)

csv excel vba excel-2007 export-to-excel

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

使用mkbundle从C#源代码创建Linux可执行文件时出现问题

在本提到的线程,以及在这里我使用mkbundle -o newfile oldfile.exe --static(OS:Ubuntu的11.10 64位,单声道:2.10.5)来创建其应在Apache Web服务器的可执行文件(OS:的Debian GNU/Linux的32位).这里oldfile.exe是使用C#-Hello-World-Code编译的结果mcs oldfile.cs.在原始系统(使用Ubuntu)上,该文件是可执行的.但是,当我newfile在Apache Web服务器上调用时,我收到错误:

不能执行二进制文件

此外,在做的file newfile时候说

ELF 64位LSB可执行文件,x86-64,版本1(SYSV),动态链接(使用共享库),不剥离

我怀疑如果mkbundle按照预期工作,那么它应该已经读过了

......静态联系......

不应该吗?任何人都知道为什么文件在服务器上不可执行?这是因为32位/ 64位的问题吗?

c# linux mono debian mkbundle

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

Python工具Poetry如何知道项目虚拟环境的路径?

我的问题: Python 工具 Poetry 如何知道一个项目的虚拟环境的路径?

说明:当我poetry init在目录中运行时,会创建一个新项目。然后我运行poetry install并创建一个新的虚拟环境。但是,该虚拟环境的路径和散列都没有存储在我预期的中pyproject.tomlpoetry.lock如我预期的那样。当我运行时,Poetry 如何知道虚拟环境的位置poetry env info -p

除了想知道发生了什么之外,我还需要知道这一点,原因有两个:

  • 如何在不中断指向其虚拟环境的链接的情况下移动包含 Poetry 项目的目录?
  • 如何知道 Poetry 的哪些虚拟环境未使用并可以删除?

可能的解决方案:查看 Poetry 的源代码,在我看来,一个文件envs.toml可能包含从文件系统目录到虚拟环境哈希的映射,但在我的 Mac OS 11.1 上我找不到这样的文件。

python-poetry

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

如何从带有文本的图像中获取字体样式?

我正在Amazon Textract API通过 AWS 的 Python API 使用 来从文档(pdfjpg)中提取文本。我确实获得了其边界框的文本和坐标,但我也希望拥有字体类型(仅需要主要的字体类型:Arial、Helvetica、Verdana、Calibri、Times New Roman + 一些其他字体)。

有人有解决方案来获取该数据吗?

最好的解决方案可能是一个包,它接受小图像,返回字体类型名称,并且我可以在我的服务器上运行它。外部 API 很可能成本太高(金钱和时间方面),因为我必须在一秒钟内运行它 100 多次。

Amazon Textract 返回什么(不幸的是,没有字体类型):

{'BlockType': 'LINE',
 'Confidence': 99.81985473632812,
 'Text': 'This is a text',
 'Geometry': {'BoundingBox': {'Width': 0.7395017743110657,
   'Height': 0.012546566314995289,
   'Left': 0.12995509803295135,
   'Top': 0.2536422610282898},
  'Polygon': [{'X': 0.12995509803295135, 'Y': 0.2536422610282898},
   {'X': 0.8694568872451782, 'Y': 0.2536422610282898},
   {'X': 0.8694568872451782, 'Y': 0.2661888301372528},
   {'X': 0.12995509803295135, 'Y': 0.2661888301372528}]},
 'Id': '59f42615-7f33-41d2-9f3c-77ae5e4b6e7a',
 'Relationships': ...}
Run Code Online (Sandbox Code Playgroud)

到目前为止我做了什么

我实现了一个解决方案,它计算文本的比率width/height,并通过使用 Python 的枕头包和不同的字体类型以编程方式绘制相同的文本,然后比较比率来进行比较。然而,这种启发式方法常常会导致错误的结果。

python ocr image-recognition amazon-textract

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

如果没有字段包含字符串,则短SQL命令返回true?

我想有一个简短形式的SQL命令(我正在使用Oracle SQL)

SELECT * from table1 
WHERE field1 not like '%test%' 
AND field2 not like '%test%' 
AND field3 not like '%test%'
Run Code Online (Sandbox Code Playgroud)

是否有与该命令等效的语法?我在考虑类似的事情

SELECT * from table1 
WHERE '%test%' not in (field1, field2, field3)
Run Code Online (Sandbox Code Playgroud)

但遗憾的是这种语法不起作用?!非常感谢所有提示和建议.

sql database sql-server oracle

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