1

メールの本文を読むために使用できる実行中のコードがあります。問題は、読んだメールを移動したいということです。たとえば、受信トレイでメールを読み、それを Outlook の別のフォルダーに移動したいと考えています。検索後、 Move コマンドでそれを行うことができますが、私のプログラムは「配列が範囲外です」というエラーを出します。たとえば、Outlook の受信トレイに 4 つのメールがあり、2 つのファイルしか移動せず、このエラーが発生します。私のコードで何が間違っていますか? 助けてくださいありがとう

try
ovOutlook := CreateOleObject('Outlook.Application');
ovNameSpace := ovOutlook.GetNameSpace('MAPI');
ovNameSpace.Logon('', '', False, True);
ovFolder := ovNameSpace.GetDefaultFolder(olFolderInbox);
OtherFolder:=ovFolder.Parent.Folders('BTM');
deger:= ovFolder.items.count;
for ii := 1 to deger do begin
 if VarIsNull(ovFolder.Items[ii]) or VarIsEmpty(ovFolder.Items[ii])  then Continue;
  ovEmailItem := ovNameSpace.GetItemFromID(ovFolder.Items[ii].EntryID);
  ovFolder.Items[ii].Move(otherfolder);
end;
finally
ovEmailItem := Unassigned;
ovOutlook := Unassigned;
ovNameSpace := Unassigned;
ovFolder := Unassigned;
OtherFolder :=   Unassigned;
end;
4

1 に答える 1

0

あなたのコードは、内のメッセージの数を減らしています。カウントダウンから 1 までのループ:

for ii := deger downto 1 do begin

ループ内でメッセージを再度開く理由がわかりません。そうする理由はまったくありません。また、コード内で複数のドット表記を避けることもお勧めします。

于 2014-06-29T02:51:39.850 に答える