小编Mik*_*kku的帖子

openpyxl检查空单元格

openpyxl似乎是使用Python读取Excel文件的好方法,但我遇到了一个常见的问题.我需要检测一个单元格是否为空,但似乎无法比较任何单元格属性.我尝试使用""作为字符串进行强制转换但是没有用.它为空时的单元格类型为None或NoneType但我无法弄清楚如何将对象与之进行比较.

建议?我知道openpyxl正在开发中,但这可能是一个普遍的Python问题.

python comparison object openpyxl

14
推荐指数
2
解决办法
5万
查看次数

为什么在 pyqt5 中我应该使用 pyuic5 而不是 uic.loadUi("my.ui")?

我一直在试验QT5Python,使用pyqt5. 我注意到大多数教程都推荐使用pyuic5将 XML UI 转换为 Python 代码。我还看过一些教程,他们使用uic.loadUi("myui.ui")来动态加载XML UI. 这对我来说似乎是一个更简洁、更模块化的解决方案,但它似乎是一个不受欢迎的选择。是否有理由pyuic5使用更完善的解决方案来转换您的代码?

python pyqt pyqt5

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

从Zip文件中删除文件夹

我正在尝试从Zip文件中删除文件夹。

所以我的文件结构是这样的:

在此处输入图片说明

内部优先:

在此处输入图片说明

我尝试在此处使用代码 Siddharth Rout的“从Zip删除文件”,但是它仅移动文件,显然文件夹变为空,但未从Zip删除

码:

Sub del()


Dim oApp As Object
Dim fl As Object
Set oApp = CreateObject("Shell.Application")

    For Each fl In oApp.Namespace("C:\Users\mohit.bansal\Desktop\Test\test\first.zip\first").Items
    'Path to a folder inside the Zip
        oApp.Namespace("C:\Users\mohit.bansal\Desktop\Test\test\Dump").MoveHere (fl.path)
    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

显然,它将所有文件移动到文件夹Dump,但名为SecondZip 的文件夹保持不变。尽管秒的所有文件也被移动了。

之后,我可以使用命令KillRmDir删除已移动的文件和文件夹。但是,如何使第二个文件夹从Zip中消失。

注意:

  • 我并不是要从Zip中移走所有文件,这只是保持代码简短的测试条件。
  • 我不是在寻找一种解决方法来解压缩文件,删除文件夹并重新压缩所有内容。
  • 让我知道是否需要其他信息。

excel zip vba

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

VBA ADODB excel - 从Recordset读取数据

希望你能帮助我,我想从excel文件中读取数据,我正在做的方式是在backgroud中创建Excel应用程序的实例,但是我被提示有关VBA宏 - 禁用或启用它.

我有100个excel文件,我需要从中收集数据,所以如果我被提示每个文件,我最终会得到真正无效的方法.虽然我是Excel VBA世界的新手,并开始怀疑是否还有其他方式.....

我的问题是我可以用其他方式打开它们吗?

我找到了ADODB,我觉得这可能对我有所帮助.所以我的代码如下.首先,我想从几个单元格中读取数据.我不知道如何读取数据.我尝试阅读,如下所示,但它会引发错误.Opennig连接顺利,查询执行也是如此.但后来我猜,如何读取数据.

我使用VBA编辑器.

Sub hello_jet()
Set cn = CreateObject("ADODB.Connection")
With cn
 .Provider = "Microsoft.Jet.OLEDB.4.0"
  .ConnectionString = "Data Source=D:\test.xls" & _
"Extended Properties=Excel 8.0;"
.Open
End With
strQuery = "SELECT * FROM [Sheet1$E36:E38]"
Set rs = cn.Execute(strQuery)
Do While Not rs.EOF
  Set strNaam = rs.Fields(0).Value
Loop
rs.Close
End Sub
Run Code Online (Sandbox Code Playgroud)

我在Office 2003中工作.然而,我发现excell的版本应该是11.这不起作用

excel vba

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

检查用户表单是否打开

我运行的程序会重复执行。当用户关闭用户窗体时,它应该停止。它运行不停。

由于该程序每8秒调用一次,因此我想在最后检查是否仍然加载/打开了用户窗体。

Public Sub NextPicture1()
   PictureChange = Now + TimeValue("00:00:08")
   If Onboarding_Projekt.Visible = True Then
      Application.OnTime PictureChange, "NextPicture1"
   End If
End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba userform

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

VBA 从跨度类中提取值

我正在使用 vba 从 HTML 中提取值,.getElementsByClassName但目前运气不佳。

我正在尝试从以下 HTML 中提取“20+”

<p class="delivery-stock">
    <span class="delivery-stock-value">20+</span> 
    <span class="delivery-available f-bold f4">available for delivery:</span>
</p>
<p>
Run Code Online (Sandbox Code Playgroud)

到目前为止我使用的 VBA 是

sh01.Cells(r, 5) = HTML.getElementsByClassName("delivery-stock-value")(0).innertext
sh01.Cells(r, 5) = HTML.getElementsByClassName("delivery-stock-value")(0).value
Run Code Online (Sandbox Code Playgroud)

我也用这个delivery-stock类做了同样的事情。

delivery-stock-value&delivery-stock在 HTML 中只出现一次。

在此先感谢您的帮助。

html excel vba web-scraping

5
推荐指数
2
解决办法
2614
查看次数

如何从VBA ADODB中的参数化SQL Server查询诊断语法错误

我正在使用VBA adodb INSERT基于Excel行内容在SQL Server中编写语句.

我正在使用参数化查询,因此我的VBA代码具有以下形式:

sqlStatement = "INSERT INTO dbo.mytable (" & Join(insertElement(0), ", ") & ") VALUES (" & Join(insertElement(2), ", ") & ")"
Set cm = New ADODB.Command

With cm
      Debug.Print (sqlStatement)
            .ActiveConnection = conn
            .CommandText = sqlStatement
            .CommandType = adCmdText
             For Each e In insertElement(1)
                Set Pm = .CreateParameter(, adVarChar, 3, 1024, e)
                .Parameters.Append Pm
             Next e
             Set rs = .Execute
        End With
Run Code Online (Sandbox Code Playgroud)

where insertElement(0)是一个字段名称数组,...(1)是一个值数组,而...(2)是一个?支持参数化的占位符数组

当我运行此代码时,我收到一个错误

[Microsoft] [SQL Server的ODBC驱动程序13] [SQL Server]'输出'附近的语法不正确

但是,当我询问sqlStatement …

sql-server excel vba adodb

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

使用VBA从Zip删除一些特定文件

在完整的宏过程中,我正在创建一个Zip文件Folder。该文件夹具有多个子文件夹和文件。使用此代码:

    Dim oApp As Object
    NewZip (s_path & "\" & acc_name & ".zip")
    Set oApp = CreateObject("Shell.Application")
    oApp.Namespace(s_path & "\" & acc_name & ".zip").CopyHere oApp.Namespace(s_path & "\" & acc_name & "\").items

        On Error Resume Next
        Do Until oApp.Namespace(s_path & "\" & acc_name & ".zip").items.Count = _
        oApp.Namespace(s_path & "\" & acc_name & "\").items.Count
        Application.Wait (Now + TimeValue("0:00:01"))
        Loop
        On Error GoTo 0

    Set oApp = Nothing
Run Code Online (Sandbox Code Playgroud)

现在,我需要检查Zip小于20mb,以便可以通过邮件发送它。我发现可以使用以下行完成:

FileLen(path)
Run Code Online (Sandbox Code Playgroud)

现在,如果文件大小超过20mb,我想从该Zip的一个特定子文件夹 …

excel vba

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

How to extract table values from a Website

https://www.morningstar.com/stocks/xnas/ATVI/price-fair-value

I am trying to extract the total returns data year wise

28.59   13.32   0.36    -12.34  69.68   14.13   93.25   -6.04   76.18   -25.92  3.99
Run Code Online (Sandbox Code Playgroud)

from the above site. I need help regarding how to proceed next.

Option Explicit

Sub genOP()

Dim i As Long, fI As Long
Dim tickeR As String
Dim urlStr As String
Dim ie As New InternetExplorer

With INP
    fI = .Range("A" & .Rows.Count).End(xlUp).Row

    For i = 2 To fI
        tickeR = Trim(.Range("A" & i))
        Debug.Print tickeR
        'https://www.morningstar.com/stocks/xnas/abmd/price-fair-value' …
Run Code Online (Sandbox Code Playgroud)

excel internet-explorer vba web-scraping

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

剪切后 VBA 范围变量消失

424错误。有没有人能告诉我为什么切割后范围变量消失了?

with sheets(1)
Dim des as range
set des = .range("A15")
.range("A1:A3").cut des
msgbox(des.row+5)
end with
Run Code Online (Sandbox Code Playgroud)

excel vba range

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

VBA宏根据一行中的多个值合并重复的行

我有一个示例 MS Excel 表:

在此处输入图片说明

我正在尝试编写一个允许我比较行的 VBA 宏,比较是使用多个单元格(A2:E2)完成的,其余单元格(F2:I2)将合并其值而不进行比较。我希望能够比较一行 - 单元格(A2:E2)到单元格(A3:E3),然后单元格(A2:E2)到单元格(A4:E4)......完成比较后它会合并重复项 - 这样单元格(Fx:Ix)也会合并。

最终效果如下:

在此处输入图片说明

到目前为止,我已经想出了这段代码,但是运行它会使 Excel 崩溃。任何形式的建议将不胜感激。

提前致谢

Sub MergeDuplicateRows()

    Dim i As Long
    Dim j As Long
    Dim RowCount As Long

    Dim sameRows As Boolean

    sameRows = True
    RowCount = Rows.Count

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    For i = 1 To Range("B" & RowCount).End(xlUp).Row
        For j = 1 To 5
            If StrComp(Cells(i, j), Cells(i + 1, j), vbTextCompare) Then
                sameRows = False
            End If
        Next j

        If sameRows Then
            Range(Cells(i, …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

如果它们末尾有一个“”,则需要编辑C列中的单元格

在C列中,会有几个不同的值。如果单元格末尾有一个“,我需要将其删除。

If .Cells(rw, 3).Value Like "*"*" Then


Run Code Online (Sandbox Code Playgroud)

不知道要在“然后”中添加什么

excel vba

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

如何在VBA中获取用户名?

我有一个调用Python代码的VBA代码:

Sub Macro1()

    Dim Ret_Val
    Dim args as String
    args = """F:\Asset Management\Global Equity\Better Interface new.py"""
    Ret_val = Shell("C:\Users\MRay\anaconda3\python.exe" & args, vbNormalFocus)

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,此代码很快将被分发,因此用户名“ MRay”将针对每个用户而更改。出于可维护性的目的,我们希望使此过程自动化,而不是手动对其进行更改。到目前为止,这是我尝试过的:

Sub Macro1()

    Dim Ret_Val
    Dim args As String
    Dim full_id As String
    Dim user_id(0 to 2) As String
    user_id(0) = "C:\Users\"
    user_id(1) = Application.UserName
    user_id(2) = "\anaconda3\python.exe"
    full_id = Join(user_id)
    args = """F:\Asset Management\Global Equity\Better Interface new.py"""
    Ret_val = Shell(full_id & args, vbNormalFocus)

End Sub
Run Code Online (Sandbox Code Playgroud)

但是,这导致Ret_val的最后一行出现错误,因为我对VBA真的很陌生,所以我只使用了Python中的逻辑。任何帮助都非常感谢:)

excel vba

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