- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
目前我尝试使用 Python 和 win32com 取消 Excel 的关闭事件。几个月前我已经设法用 IronPython 处理了这个问题。但是为了我公司部门的进一步目的,这也应该能够使用 Python。接下来你会看到两个片段。第一个将包含工作的 IronPython 代码
import clr
clr.AddReference("Microsoft.Office.Interop.Excel")
clr.AddReference("System.Windows.Forms")
from Microsoft.Office.Interop import Excel
from System.Windows.Forms import Form, Application, MessageBox, MessageBoxButtons, MessageBoxIcon, DialogResult
class CloseEventTry(Form):
định nghĩa __init__(bản thân):
excel = Excel.ApplicationClass()
excel.Visible = True
excel.DisplayAlerts = False
self.workbooks = excel.Workbooks.Add()
self.Text = "Dummy GUI Window"
#link "BeforeCloseEvent" to the "beforeClose" method
self.workbooks.BeforeClose +=Excel.WorkbookEvents_BeforeCloseEventHandler(self.beforeClose)
def beforeClose(self, cancel):
print type(cancel) #Type: 'StrongBox[bool]
choice = MessageBox.Show("Close Excel", "Close", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
if choice == DialogResult.Yes:
cancel.Value = False #do't cancel the close action
self.Close()
elif choice == DialogResult.No:
cancel.Value = True #prevent excel from closing
Application.Run(CloseEventTry())
第二个将包含带有 Python 和 win32com 的版本。这个基于我的 IronPython 片段和该链接的示例
https://win32com.goermezer.de/microsoft/office/events-in-microsoft-word-and-excel.html
import clr
clr.AddReference("System.Windows.Forms")
from System.Windows.Forms import Form, Application, MessageBox, MessageBoxButtons, MessageBoxIcon, DialogResult
import win32com.client as win32
class WorkBookEvents(object):
def OnBeforeClose(self, cancel):
print(type(cancel)) #Type: class 'bool'
choice = MessageBox.Show("Close Excel", "Close", MessageBoxButtons.YesNo, MessageBoxIcon.Information)
if choice == DialogResult.Yes:
#do't cancel the close action => raises AttributeError: 'bool' object has no attribute 'Value' Exception
cancel.Value = False
self.Close()
elif choice == DialogResult.No:
#prevent excel from closing => raises AttributeError: 'bool' object has no attribute 'Value' Exception
cancel.Value = True
class CloseEventTry(Form):
định nghĩa __init__(bản thân):
excel = win32.DispatchEx('Excel.Application')
excel.Visible = True # makes the Excel application visible to the user
excel.DisplayAlerts = False
self.Text = "Dummy GUI Window"
self.workbooks = excel.Workbooks.Add()
self.workbooks = win32.DispatchWithEvents(self.workbooks, WorkBookEvents)
Application.Run(CloseEventTry())
正如您将看到的,我可以连接到“OnBeforeClose”事件,但不能像我在 IronPython 版本中那样取消关闭事件。正如最后一个代码片段的评论中提到的,Python 版本引发了一个 AttributeError 异常。此外,您还可以看到,事件处理程序所需的“取消”变量的类型有两种不同的类型。在 IronPython 版本中,它是一个“StrongBox[bool]”。另一方面,Python 版本的类型是常见的“class 'bool'”类型(这解释了异常)。那就是我试着输入
cancel = True #prevent excel from closing
但使用这种方式,excel 无论如何都会关闭。我也做了一些研究,但无法找到解决此问题的方法。我的假设是需要某种包装器吗?
1 Câu trả lời
您可以通过返回所需的取消值来实现与 IronPython 版本相同的行为,例如
return True
如果您想中止 Close 事件。
问候
关于python - 使用python和win32com取消Excel的关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44065226/
Tôi đã tìm kiếm trực tuyến nhưng không tìm thấy bài viết phù hợp nào giải thích cách sử dụng dịch vụ WCF bằng javascript, đặc biệt là WebScriptEndpoint. Có ai có thể hướng dẫn về vấn đề này không? Cảm ơn câu trả lời hay nhất. Đây là bài viết về
Tôi đang viết một chương trình C sẽ chạy các lệnh Linux, ví dụ: cat /etc/passwd | grep list | cut -c 1-5 Tôi không nhận được kết quả nào *ở đây cha đợi con đầu tiên (chi
Vì vậy, tôi đang cố gắng xử lý việc tải tệp lên và sau đó lưu trữ tệp đó vào cơ sở dữ liệu dưới dạng tệp nhị phân. Sau khi lưu trữ, tôi cố gắng phục vụ tệp theo URL đã cho. Có vẻ như tôi không thể tìm ra phương pháp nào hiệu quả ở đây. Tôi cần sử dụng cơ sở dữ liệu vì tôi sử dụng Google Apps
Tôi đang cố gắng tạo một macro thêm công thức bên dưới vào một ô rồi kéo công thức đó xuống toàn bộ cột và sao chép công thức đó vào cột H. Tôi muốn nhập dữ liệu vào cột F và H cho công thức: Range("F1").formula = "=IF(ISE
Vấn đề này tương tự như vấn đề này, nhưng tôi muốn sử dụng OperatorPrecedenceParser để phân tích cú pháp một biểu thức với ứng dụng hàm trong FParsec. Đây là AST của tôi: type Expression =
Tôi muốn thay đổi truy vấn này thành mã bằng cách sử dụng sequelize và node.js tùy thuộc vào nơi select COUNT(gender) as genderCount from customers where
Tôi đang sử dụng GNU bash, phiên bản 5.0.3(1)-release (x86_64-pc-linux-gnu), và tôi tự hỏi tại sao tôi lại gặp lỗi cú pháp cho một câu lệnh gán đơn giản: #/bin/bash var1=/tmp
Sau đây là lý do tại sao mã của tôi không hoạt động trong IE. Mã của tôi hoạt động tốt trên mọi trình duyệt. Không có gì. Nhưng khi tôi chạy dự án của mình trên IE, nó lại phát hiện lỗi. Và lớp jquery và insertadjacentHTMl của tôi không hoạt động
Tôi đang cố gắng thay đổi innerHTML của một thẻ. Tôi không có quyền truy cập vào biểu mẫu nên không thể chỉnh sửa HTML. Mã định danh duy nhất của thẻ là thuộc tính "for". Sau đây là cấu trúc của đầu vào và nhãn:
Tôi có một trang nơi tôi trả về bài đăng của người dùng, có thể bình luận tức thời vào các bài đăng đó bằng một số mã jquery và sau khi có bình luận mới, tôi chèn bình luận mới vào bên dưới bài đăng cùng với nút xóa. Vấn đề là nút Xóa không hoạt động trên phần tử mới được chèn vào,
Tôi có một tệp "phân cách bằng dấu gạch ngang" với khoảng 20 cột. Tôi chỉ muốn băm cột đầu tiên là một số như số tài khoản bằng cách sử dụng sha1sum và trả về phần còn lại của các cột theo nguyên trạng. Cách tốt nhất để thực hiện việc này bằng awk hoặc sed là gì? Tài khoản
Tôi cần chèn nội dung sau vào bảng của mình... Bảng người dùng của tôi có năm cột id, tên người dùng, mật khẩu, tên, mục nhập. (Tôi chưa gửi bất cứ thứ gì vào mục nhập, tôi sẽ làm sau bằng php) nhưng vì lý do nào đó tôi cứ nhận được lỗi này: #1054 - U
Vì vậy, tôi đang cố gắng tạo một trường nhập liệu mà tôi có thể nhập bất kỳ ký tự nào vào đó, sau đó viết thường giá trị đã nhập, xóa mọi ký tự không phải chữ và số, chỉ để lại dấu "." thay cho dấu cách. Ví dụ, nếu tôi nhập: 70% Trái Đất là nước, -!*#$^^ & 30% đất
Tôi đang cố gắng làm một điều mà tôi nghĩ là khá đơn giản nhưng vì lý do nào đó tôi lại không nhận được kết quả như mong muốn? Tôi mới làm quen với javascript nhưng đã có kinh nghiệm với java nên chắc chắn là tôi không sử dụng quy tắc chính xác nào cả. Đây là phương pháp để lấy giá trị đầu vào, kiểm tra lựa chọn
Tôi đang cố gắng tải dữ liệu từ cơ sở dữ liệu mysql bằng angularjs. Ứng dụng hoạt động theo cách này: người dùng đăng nhập và tên người dùng của họ được lưu trữ trong cookie. Tên người dùng này được hiển thị trên trang chủ Tôi muốn lấy giá trị này và truyền nó qua angularjs
Tôi đang sử dụng autoLayout và muốn đặt UIlabel vào UITableViewCell và nó phải luôn nằm ở bên phải và ở giữa ô. Đây là những gì tôi muốn đạt được vì vậy ở đây bạn có thể thấy những gì tôi đang nói đến
Tôi cần truy vấn elasticsearch tương đương với MySql. Truy vấn sql của tôi: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
Tôi đang triển khai mã để làm việc với JSON. func setup() { nếu let flickrURL = NSURL(string: "https://api.flickr.com/
Tôi đã thử sử dụng vòng lặp for để khai báo các biến và sau đó kiểm tra xem cols và rols có giống nhau không. Nếu đúng như vậy, nó sẽ chạy hàm đệ quy. Tuy nhiên, tôi đang gặp sự cố khi thực hiện lệnh do trong javascript. Có ai có thể giúp được không? Bây giờ, khi so sánh cột 1 và
Tôi đã đưa ra một ví dụ ngắn về một vấn đề mà tôi đang giải quyết. Mã HTML: 1 2 3 Mã CSS: .BB a:hover{ color: #000; } .BB > li:after {
Tôi là một lập trình viên xuất sắc, rất giỏi!