簡體   English   中英

MS Word 宏的權限被拒絕

[英]Permission denied on MS Word macro

我有一個包含大量圖像的 MS Word 文檔(Office 365 版本 1803)。 我需要選擇文檔中的所有圖像,但是手動完成的圖像太多了。 在網上查看,似乎唯一的方法是使用我沒有經驗的宏。 我寫了以下非常簡單的宏:

Sub SelectAllImages()
    ActiveDocument.Shapes.SelectAll
End Sub

當我保存文檔時,我被迫將其更改為啟用宏的 Word 文檔 (.docm),我也這樣做了。 但是,每當我嘗試運行宏時,都會出現以下錯誤:

Run-time error '70': Permission denied

我在谷歌上搜索了這個錯誤,但沒有任何幫助我解決它。 任何人都知道我做錯了什么?

編輯:作為附加數據,我想要做的是刪除大部分但不是所有的圖像。 我有一個 200 多頁長的文檔,平均每頁大約有 1 張圖像。 我需要發布此文檔的 2 個版本:第一個包含所有圖像,第二個刪除了大約 12 個圖像之外的所有圖像。 該文檔會定期更新,我不想一直更新 2 個單獨的版本,並確保它們除了包含圖像之外是相同的。 因此,我希望能夠只維護一個版本,其中包括所有圖像。 然后在每次更新后,我希望能夠選擇所有圖像,手動取消選擇我想要保留的 12 個圖像,然后刪除其他圖像。

如果有一種方法可以以某種方式“標記”我想要保留的圖像,並使用宏刪除所有標記的圖像,這將是一個更好的解決方案。

如果文檔中有任何 InlineShapes,您將收到該錯誤。 只需要一個,該命令就會出錯。 您必須從帶有換行文本的形狀中分別選擇 InlineShapes。 請參閱下面的代碼。

關於你關於標簽的問題。 要“標記”圖像,請在圖像的替代文本中放置一個獨特的短語,例如“請勿刪除”。 然后,您可以使用如下代碼刪除所有圖像,但已標記的圖像除外。

對於內嵌圖像,此代碼可能會在文檔中留下一個空白段落,我會將其留給您來確定您希望最終文檔的外觀。

Sub RemoveAllImagesWithExceptions()
Dim doc As Word.Document, iShp As Word.InlineShape
Dim shp As Word.Shape, i As Long, rng As Word.Range
Set doc = ActiveDocument
Set rng = doc.Content
For i = rng.InlineShapes.Count To 1 Step -1
    Set iShp = rng.InlineShapes(i)
    Select Case iShp.Type
        Case wdInlineShapeLinkedPicture, wdInlineShapePicture
            If InStr(1, iShp.AlternativeText, "Do Not Delete") = 0 Then
                iShp.Delete
            End If
    End Select
Next
For i = rng.ShapeRange.Count To 1 Step -1
    Set shp = rng.ShapeRange(i)
    Select Case shp.Type
        Case msoLinkedPicture, msoPicture
            If InStr(1, shp.AlternativeText, "Do Not Delete") = 0 Then
                shp.Delete
            End If
    End Select
Next
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM