我试过这个代码,但这是为了验证。我想要一个代码来创建一个新的下拉菜单。
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)
探索步骤:
为创建list
类型数据验证的默认步骤记录一个宏:
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"