小编jac*_*_wi的帖子

压缩zip存档本身以外的文件夹中的所有文件

我使用此代码将文件夹中的所有文件压缩到新创建的.zip文件中:

Dim FileNameZip, FolderName
Dim filename As String, DefPath As String
Dim oApp As Object

(defining all paths needed)

'Create empty Zip File
NewZip (FileNameZip)

Set oApp = CreateObject("Shell.Application")
'Copy the files to the compressed folder
oApp.Namespace(FileNameZip).CopyHere oApp.Namespace(FolderName).items

'Keep script waiting until Compressing is done
On Error Resume Next
Do Until oApp.Namespace(FileNameZip).items.Count = oApp.Namespace(FolderName).items.Count
    Application.Wait (Now + TimeValue("0:00:01"))
Loop
Run Code Online (Sandbox Code Playgroud)

只要我的目标文件夹与我的文件所在的文件夹不同,这就没有问题.

但是当我尝试从文件夹中取出所有文件,将它们放入并在同一文件夹中生成存档时,我遇到了问题 - 它创建了存档,然后尝试将其放入自身,这当然失败了..zip

我正在寻找一种方法来压缩文件夹中的所有文件,除了这个新创建的文件. …

windows directory zip vba excel-vba

9
推荐指数
2
解决办法
1155
查看次数

使用字符串值调用VBA sub

这是我的测试代码

Sub dotask()

    Dim qusub As String
    qusub = Worksheets("Task List").Range("C2").Value

    MsgBox qusub
    Application.Run qusub

End Sub

Sub msg1()

    MsgBox "sub msg1"

End Sub

Sub msg2()

    MsgBox "sub msg2"

End Sub

Sub msg3()

    MsgBox "sub msg3"

End Sub

Sub msg4()

    MsgBox "sub msg4"

End Sub
Run Code Online (Sandbox Code Playgroud)

所有这些都包含在一个标准模块中.我已经阅读了尝试使用字符串调用Sub - VBA并根据我在那里找到的代码编写了我的代码(即使用Application.Run).任务列表工作表的单元格C2目前包含"msg3".当我执行sub"dotask"时,我首先得到一个消息框,说"msg3",但我得到以下错误消息:

运行时错误'1004':

无法运行宏'msg3'.宏可能在此工作簿中不可用,或者可能禁用所有宏.

我正在使用Excel 2010,文件是.xlsm- 我应该怎么做才能让我的代码按照我的意愿执行?

excel vba excel-vba

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

Excel VBA - 以0开头的字符串

Dim testtext As String
testtext = Worksheets("Sheet2").Range("B6").Value
Worksheets("Sheet2").Range("B7").Value = testtext
Run Code Online (Sandbox Code Playgroud)

将一个单元格的内容简单复制到另一个单元格中.但是当B6的内容出现问题时我遇到了问题'02345- 在运行宏B7包含后2345,我不想失去前导零.我尝试在代码的第二行替换.Value,.Text这没有帮助.

excel vba excel-vba

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

Excel VBA 创建日期+时间值

在我的表中,我有两列包含以下类型的数据:yyyymmddhhmmddxx- 第一个包含日期,另一个时间精度为 0.01 秒。例如,我有2016110217052349

我想将其转换为显示某个时刻的单个值并以格式显示dd/mm/yyyy hh:mm:ss.xx,例如,我想将02/11/2016 17:05:23.49. 我想我需要使用DateSerialTimeSerial函数,但是有两个问题我不知道如何解决:

  1. TimeSerial 接受小时、分钟和秒作为参数,都是整数类型,如何将秒的分数传递给它?
  2. DateSerial 将创建我的日期,TimeSerial 将创建我的时间,是否有一个函数将日期和时间作为参数并从中创建一个“那一天,那个时间”值?

excel vba date

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

MsgBox 中的表

我正在编写一个宏,它比较两组值并警告用户是否存在任何差异。当发现差异时,我希望用户输入他们的评论。为了让他们轻松理解我要问的内容,我想显示用于获取评论的输入框内的所有数字。我想要得到的示例输入框可能如下所示:

Difference between warehouse and accounting records! See details below, insert reason.

Product: Toyota Corolla

------------------------------
|Item   |Warehouse|Accounting|
------------------------------
|Wheel  |        3|         3|
------------------------------
|Engine |        2|         3|
------------------------------
|Door   |        7|         7|
------------------------------
|Gearbox|        5|         5|
------------------------------
|Roof   |        4|         3|
------------------------------
Run Code Online (Sandbox Code Playgroud)

在这种情况下,警报是由 Roof 和 Engine 的不同值引起的。填充表的数字存储在变量中。如何制作这样的表格,对于必须输入评论的用户来说看起来很清楚?

excel vba

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

标签 统计

vba ×5

excel ×4

excel-vba ×3

date ×1

directory ×1

windows ×1

zip ×1