我有以下For循环。应该删除所有import imaplib
import email
from email.parser import HeaderParser
from email.header import decode_header
imap = imaplib.IMAP4_SSL("imap.domainname.com", port=993)
imap.login('mail@domainname.com','mypassword')
imap.select(mailbox = 'INBOX' , readonly = True)
resp, items = imap.uid("search", None, 'All')
email_ids = items[0].split()
mailparser = HeaderParser()
for e, msg_uid in enumerate(reversed(email_ids)):
resp, data = imap.uid('fetch', msg_uid, "(RFC822.HEADER)")
email_body = data[0][1]
mail = email.message_from_bytes(email_body)
email_from = decode_header(mail["From"])[0][0]
email_subject = decode_header(mail["Subject"])[0][0]
email_date = dateutil.parser.parse( mail['Received'][-26:])
print(email_from, email_subject, '\nT:', email_date)
print('\n')
if e > 20:
break
的行。
它正在删除行,但是当有行像图片一样时,代码将跳过其中之一并删除其中之一。
.
任何人都可以帮助删除包含For row_num = 8 To max_row
page_title = Sheets("Stack").Range("C" & row_num + 1).value
If page_title = " ....................................................................................................................................................................................................................................................................................................." Then
Sheets("Stack").Range("C" & row_num + 1).EntireRow.delete
End If
Debug.Print page_title
Next row_num
的连续行吗?
答案 0 :(得分:1)
这是因为例程的逻辑。例如,如果删除第5行,那么第6行将是第5行,依此类推,因此将不读取第6行。要删除该行,请尝试将该列的值设置为空
Sheets("Stack").Range("C" & row_num + 1).EntireRow = Empty
您将看到所有行都将被读取。
完成后,您可以告诉excel / vba根据一列对matriz进行整理,因此末尾将排空行,也就是说,它将成为工作表中其余空白空间的一部分>