Outlookで連絡先リストを整理するためのコードを書いています。OutlookのContactItemオブジェクトの2つの電話番号を交換する必要があります
私はさまざまな分野で「余分な」電話番号を保存していますが、今はそれらを移動したいと考えています。
具体的には、私がモバイルフィールドの非携帯番号と非モバイルフィールドの携帯番号を認識すると、それらを入れ替える必要があります。
ただし、以下のコードは機能しません。エラーは発生しませんが、スワップルーチンが復帰すると電話番号は変更されません。
私はByRefの使用が間違っているか、クラスプロパティを参照渡しできないか、クラスの文字列プロパティが奇妙な方法で振る舞い、私が推測できないと思います。
私は、誰かがそれを少なくとも行うことができないことを確認することができたとしても、私はそれをパズルしようとしている時間を無駄に停止しますPriortySwitch ARG1 ARG2 ARG3とコールPrioritySwitch(ARG1、ARG2、ARG3)の両方
を試してみましたでる。
Sub Whatever
Dim Ns As Outlook.NameSpace
Dim Contacts As Items
Dim Contact As ContactItem
Set Ns = Application.GetNamespace("MAPI")
'use the default folder
Set Contacts = Ns.GetDefaultFolder(olFolderContacts).Items.Restrict("[MessageClass]='IPM.Contact'")
'do whatever
On Error GoTo WTF
For Each Item In Contacts
If Item.Class = olContact Then
Set Contact = Item
With Contact
' Call SetCategories(Contact)
'.MobileTelephoneNumber = FormatTel(.MobileTelephoneNumber)
'.AssistantTelephoneNumber = FormatTel(.AssistantTelephoneNumber)
'.Business2TelephoneNumber = FormatTel(.Business2TelephoneNumber)
'.BusinessFaxNumber = FormatTel(.BusinessFaxNumber)
'.BusinessTelephoneNumber = FormatTel(.BusinessTelephoneNumber)
'.CallbackTelephoneNumber = Format(.CallbackTelephoneNumber)
'.CarTelephoneNumber = FormatTel(.CarTelephoneNumber)
'.CompanyMainTelephoneNumber = FormatTel(.CompanyMainTelephoneNumber)
'.Home2TelephoneNumber = FormatTel(.Home2TelephoneNumber)
'.HomeFaxNumber = FormatTel(.HomeFaxNumber)
'.HomeTelephoneNumber = FormatTel(.HomeTelephoneNumber)
'.OtherFaxNumber = FormatTel(.OtherFaxNumber)
'.OtherTelephoneNumber = FormatTel(.OtherTelephoneNumber)
'.PagerNumber = FormatTel(.PagerNumber)
'.PrimaryTelephoneNumber = FormatTel(.PrimaryTelephoneNumber)
'.RadioTelephoneNumber = FormatTel(.RadioTelephoneNumber)
'.TTYTDDTelephoneNumber = FormatTel(.TTYTDDTelephoneNumber)
' prioritise
PrioritySwitch .MobileTelephoneNumber, .BusinessTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .Business2TelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .BusinessFaxNumber, True
PrioritySwitch .MobileTelephoneNumber, .CompanyMainTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .PrimaryTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .AssistantTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .CallbackTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .CarTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .CompanyMainTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .Home2TelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .HomeTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .OtherTelephoneNumber, True
PrioritySwitch .MobileTelephoneNumber, .PagerNumber, True
PrioritySwitch .MobileTelephoneNumber, .HomeFaxNumber, True
PrioritySwitch .MobileTelephoneNumber, .OtherFaxNumber, True
If Not .Saved Then .Save
End With
End If
Next
Exit Sub
WTF:
Debug.Print Contact
End Sub
Sub PrioritySwitch(ByRef Tel1 As String, ByRef Tel2 As String, mobileOnly As Boolean)
Dim t1 As String
Dim switchTel As Boolean
switchTel = False
'Logic code goes here
switchTel = True
If switchTel Then
t1 = Tel1
Tel1 = Tel2
Tel2 = t1
End If
End Sub
ありがとうComintern、 – GreySpike