Q: The requested member of the collection does not exist Thanks to someone on here, I finally have a working loop... almost :)
It works most of the time but, in some instances, this error comes up.
The code:
procedure TLetters.ReplaceDate(NewDate: String);
var I : Integer;
    ARegion : OleVariant;
    FieldType : Integer;
    FieldCount : Integer;
begin
    FieldCount := WordApp.ActiveDocument.Fields.Count;
    For I := 1 to FieldCount do
    Begin
         FieldType := WordApp.ActiveDocument.Fields.Item( I ).type;
         If FieldType IN [ 31,32 ] Then
         Begin
               ARegion := WordApp.ActiveDocument.Fields.Item( I ).Code;
               WordApp.ActiveDocument.Fields.Item( I ).Cut;
               ARegion.Text := NewDate;
         End;
    End;
end;

The problem with the above code is that, sometimes, Count will return 2 but when I try examining the second entry, it outputs the exception in subject.
Could it just be that I have to do a Count -1 instead of a Count?

A: You are correct.
All counts in Office go from 1 to count.  
The error is in your code:
procedure TLetters.ReplaceDate(NewDate: String);
var I : Integer;
  ARegion : OleVariant;
  FieldType : Integer;
  FieldCount : Integer;
begin
  FieldCount := WordApp.ActiveDocument.Fields.Count;
  for I := 1 to FieldCount do begin
    FieldType := WordApp.ActiveDocument.Fields.Item( I ).type;
    If FieldType IN [ 31,32 ] then begin
      ARegion := WordApp.ActiveDocument.Fields.Item( I ).Code;
      WordApp.ActiveDocument.Fields.Item( I ).Cut;  <<--- here !!
      ARegion.Text := NewDate;
    end;
  end;
end;

When you cut an item, you remove it from the list, and you should reduce the count by one. 
Rewrite the code like so:
begin
  FieldCount := WordApp.ActiveDocument.Fields.Count;
  i:= 1;
  while (i <= fieldCount) do begin
    FieldType := WordApp.ActiveDocument.Fields.Item( i ).type;
    if FieldType in [ 31,32 ] then begin
      ARegion := WordApp.ActiveDocument.Fields.Item( i ).Code;
      WordApp.ActiveDocument.Fields.Item( i ).Cut; 
      Dec(FieldCount);
      ARegion.Text := NewDate;
    end 
    else Inc(i);
  end; {while}
end;

