我已经尝试过这段代码,但这是为了验证。我想要一个代码来创建一个新的下拉菜单。
app = xw.App(visible=True)
wb = app.books.open('Test.xlsx')
sht = wb.sheets['Sheet1']
Formula1='"Dog,Cat,Bat"'
dv = sht.range('A1').api.Validation.Formula1
我尝试使用 openpyxl 它可以工作,但在文件打开时它不会保存文件。
最佳答案
xlwings
是win32com
的包装,与VBA类似。通过录制 VBA 宏以供引用,以下代码应该可以工作。
import xlwings as xw
app = xw.App(visible=True)
wb = app.books.open('Test.xlsx')
sht = wb.sheets['Sheet1']
Formula1='Dog,Cat,Bat' # remove the redundant "
# set up validation
sht.range('A1').api.Validation.Add(Type=3, Formula1=Formula1)
探索步骤:
录制一个宏,用于创建列表
类型数据验证的默认步骤:
Sub Macro1()
'
' Macro1 Macro
'
'
Range("A1").Select
Application.WindowState = xlMaximized
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:="Dog,Cat,Bat"
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = True
End With
End Sub
事实上,我们只做了两个关键步骤,其余部分保持默认:
- 从验证条件下拉列表中选择
List
- 输入列表来源
所以,上面的代码应该简化为
' VBA
Range("A1").Validation.Add Type:=xlValidateList, Formula1:="Dog,Cat,Bat"
关于python - 在 Python 中使用 XLWings 创建下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67050455/