openpyxl似乎是使用Python读取Excel文件的好方法,但我遇到了一个常见的问题.我需要检测一个单元格是否为空,但似乎无法比较任何单元格属性.我尝试使用""作为字符串进行强制转换但是没有用.它为空时的单元格类型为None或NoneType但我无法弄清楚如何将对象与之进行比较.
建议?我知道openpyxl正在开发中,但这可能是一个普遍的Python问题.
我一直在试验QT5Python,使用pyqt5. 我注意到大多数教程都推荐使用pyuic5将 XML UI 转换为 Python 代码。我还看过一些教程,他们使用uic.loadUi("myui.ui")来动态加载XML UI. 这对我来说似乎是一个更简洁、更模块化的解决方案,但它似乎是一个不受欢迎的选择。是否有理由pyuic5使用更完善的解决方案来转换您的代码?
我正在尝试从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 的文件夹保持不变。尽管秒的所有文件也被移动了。
之后,我可以使用命令Kill&RmDir删除已移动的文件和文件夹。但是,如何使第二个文件夹从Zip中消失。
注意:
希望你能帮助我,我想从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.这不起作用
我运行的程序会重复执行。当用户关闭用户窗体时,它应该停止。它运行不停。
由于该程序每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) 我正在使用 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 中只出现一次。
在此先感谢您的帮助。
我正在使用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 …
在完整的宏过程中,我正在创建一个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的一个特定子文件夹 …
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) 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) 我有一个示例 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) 在C列中,会有几个不同的值。如果单元格末尾有一个“,我需要将其删除。
If .Cells(rw, 3).Value Like "*"*" Then
Run Code Online (Sandbox Code Playgroud)
不知道要在“然后”中添加什么
我有一个调用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中的逻辑。任何帮助都非常感谢:)