0

いくつかのフィールドを含むカレンダーの [すべてのイベント] リストがあり、一部は管理されたメタデータおよび人物プレゼンス ルックアップ フィールドからのものです。リボン機能を使用してリストを Excel にエクスポートしようとすると、各フィールド値に id ハッシュ タグが付いています。

これにより、Excelシートが非常に役に立たなくなり、読めなくなります。

SharePoint 2010 プラットフォームでこの問題を試したり、遭遇したりした人はいますか? id # タグなしでデータを Excel にエクスポートする方法はありますか?

例: 出席者: フィールドには、人の存在が有効になっているユーザーのリストが含まれます。このフィールド値を Excel にエクスポートすると、Doe, John;#39 のように、各ユーザーが独自の一意の # タグでシートにコピーされます。
または、それがタクソノミー管理メタデータ ルックアップ フィールドの場合、エクスポート データには一意の # が付きます。 74 のように値の前にタグを付けます;#Ford

お手伝いできることがあればお知らせください。ご不明な点がございましたら、お気軽にお問い合わせください。

1 つの提案は、# タグを置き換える単純なテキストとして値を計算フィールドにコピーしようとすることでした。しかし、既存のルックアップ フィールドからの計算に基づいて列を作成することはできません。
もう 1 つの提案は、これらのハッシュ タグを削除するようにコード化できる Excel ワークブック Book1 にマクロを作成することです。

Excel データシートをクリーンアップするための他の簡単な方法があることを願っています。私にお知らせください。ありがとう、

4

3 に答える 3

2

ここでの答えは、XLSTART ローカル マシン ディレクトリに保存されている .xlam アドインを介してすべてのスプレッドシートにアクセスできるように、Excel でクリーンアップ マクロを作成することです。

この VBA コードはきれいではありませんが、魔法のように機能します: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~

Sub Remove_unneeded()

' Remove_unneeded Macro
' Removes extraneous hash setup from SharePoint exported workbook

Dim Again As Integer
Dim Again1 As Range

On Error GoTo Nope

Set Again1 = Cells.Find(What:="?;#", LookAt:=xlPart)
If Again1 Is Nothing Then
    Set Again1 = Cells.Find(What:=";#?", LookAt:=xlPart)
    If Again1 Is Nothing Then
        GoTo Nope
    End If
End If

Range("A1").Select
Again = 1

Do While Again < 5
    Set Again1 = Cells.Find(What:="0;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="0;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="0;#", LookAt:=xlPart)
    Loop

        Set Again1 = Cells.Find(What:="1;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="1;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="1;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="2;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="2;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="2;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="3;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="3;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="3;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="4;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="4;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="4;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="5;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="5;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="5;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="6;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="6;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="6;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="7;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="7;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="7;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="8;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="8;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="8;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:="9;#", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:="9;#", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:="9;#", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#0", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#0", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#0", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#1", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#1", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#1", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#2", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#2", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#2", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#3", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#3", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#3", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#4", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#4", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#4", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#5", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#5", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#5", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#6", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#6", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#6", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#7", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#7", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#7", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#8", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#8", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#8", LookAt:=xlPart)
    Loop

    Set Again1 = Cells.Find(What:=";#9", LookAt:=xlPart)
    Do While Not Again1 Is Nothing
        Cells.Replace What:=";#9", Replacement:=";#", LookAt:=xlPart, _
            SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
            ReplaceFormat:=False
        Set Again1 = Cells.Find(What:=";#9", LookAt:=xlPart)
    Loop
    Again = Again + 1
Loop

Set Again1 = Cells.Find(What:="#;#", LookAt:=xlPart)
Do While Not Again1 Is Nothing
    Cells.Replace What:="#;#", Replacement:=" | ", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set Again1 = Cells.Find(What:="#;#", LookAt:=xlPart)
Loop

Set Again1 = Cells.Find(What:=";#", LookAt:=xlPart)
Do While Not Again1 Is Nothing
    Cells.Replace What:=";#", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set Again1 = Cells.Find(What:=";#", LookAt:=xlPart)
Loop

Set Again1 = Cells.Find(What:="#;", LookAt:=xlPart)
Do While Not Again1 Is Nothing
    Cells.Replace What:="#;", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set Again1 = Cells.Find(What:="#;", LookAt:=xlPart)
Loop

Set Again1 = Cells.Find(What:="#", LookAt:=xlPart)
Do While Not Again1 Is Nothing
    Cells.Replace What:="#", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set Again1 = Cells.Find(What:="#", LookAt:=xlPart)
Loop

Set Again1 = Cells.Find(What:="; |", LookAt:=xlPart)
Do While Not Again1 Is Nothing
    Cells.Replace What:="; |", Replacement:=" |", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Set Again1 = Cells.Find(What:="; |", LookAt:=xlPart)
Loop

Range("A1").Select
MsgBox "Extraneous hash data has been deleted."
Exit Sub

Nope:
    MsgBox "This is not the proper spreadsheet setup to run this macro."

End Sub

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

また、iRibbon コントロールを使用して xlam に追加のマクロを作成し、Excel のカスタム リボンのボタンを介してこのマクロにアクセスし、それに対応するように xlam UI xml を編集しました。ただし、マクロを使用する準備ができたら、好きなように UI を設定できるため、これはウィンドウ ドレッシングです。

セキュリティ センターの [マクロ オプション] の [Excel のオプション] で [VBA プロジェクト オブジェクト モデルの信頼] をオンにする必要があります。もちろん、アドインにデジタル署名する機能がない限り。

于 2012-07-27T19:56:15.117 に答える
0

私もマクロを使ってきれいにしました

Private Sub CommandButton1_Click()
'Columns to format
    Dim cols() As Variant: cols = Array("AC", "AL", "AM", "BA", "BB")
    Dim col As String


    For i = LBound(cols) To UBound(cols)
        Call FormatColumn("Sheet1", cols(i))
    Next

    MsgBox ("Formatting Lookup & Person - Group column completed.")
End Sub

Sub FormatColumn(ByVal Shet As String, ByVal col As String)
    Dim flagValueChanged As Boolean: flagValueChanged = False
    Dim strPattern1 As String: strPattern1 = "#\d+;"
    Dim strPattern2 As String: strPattern2 = "#\d+"
    Dim strPattern3 As String: strPattern3 = "#"
    Dim strReplace As String: strReplace = ""
    Dim regex As New RegExp
    With regex
        .Global = True
        .MultiLine = True
        .IgnoreCase = True
    End With

    'process for all items in the column

    rowscount = Sheets(Shet).Range("A1048576").End(xlUp).Row
    'i = 16
    For i = 2 To rowscount
        flagValueChanged = False
        currentValue = Sheets(Shet).Cells(i, col)
        'MsgBox (currentValue)

        'format Pattern1
        With regex
           .Pattern = strPattern1
        End With

        If regex.Test(currentValue) Then
           currentValue = regex.Replace(currentValue, strReplace)
           flagValueChanged = True
           'MsgBox (currentValue)
        End If

        'format Pattern2
        With regex
           .Pattern = strPattern2
        End With

        If regex.Test(currentValue) Then
           currentValue = regex.Replace(currentValue, strReplace)
           flagValueChanged = True
           'MsgBox (currentValue)
        End If

        'format Pattern3
        With regex
           .Pattern = strPattern3
        End With

        If regex.Test(currentValue) Then
           currentValue = regex.Replace(currentValue, strReplace)
           flagValueChanged = True
           'MsgBox (currentValue)
        End If

        'update formatted value
        If flagValueChanged Then
           Sheets(Shet).Cells(i, col) = currentValue
        End If

        'MsgBox (currentValue)
    Next i

End Sub
于 2016-02-04T07:55:04.657 に答える
0

この問題に対する私の解決策は、リストに新しい列を作成し、私の場合は「OnlyValues」という名前を付けることでした。リストでアイテムが作成または更新されるたびに、たとえば「Person Group」フィールドの値で「OnlyValues」を更新するワークフローを作成しました


Person or Group field = AssignedTo
Auxiliary field = OnlyValues

Workflow:
If Current Item:AssignedTo is not empty
 Set OnlyValues to Current Item:AssignedTo
then Stop the workflow and log Success

その後、他のフィールドと OnlyValues を表示するリストにビューを作成し、Excel にエクスポートしました。ハッシュタグが消えました!これが誰にも役立つことを願っています! ^^

于 2013-10-03T17:26:47.887 に答える