Wie entferne ich den Verweis und verwende vba-Code für jede Maschine?

436
Atul Bihari

Wie Sie angedeutet haben, habe ich Änderungen vorgenommen, aber ich bin nicht in der Lage, sie benutzerfreundlich zu gestalten, oder Sie können jedes Mal sagen, wenn ich diesen Code verwenden muss, muss ich Scripting Runtime auf verschiedenen Computern aktivieren.

Bitte schlagen Sie vor und korrigieren Sie meinen Code so schnell wie möglich

Sub GetFileNamesandPageCount() Option Explicit Public fs As Object  Dim diaFolder As FileDialog Set fs = CreateObject("Scripting.FileSystemObject") Dim i As Integer Dim fld As Object Dim T_Str As String Set diaFolder = Application.FileDialog(msoFileDialogFolderPicker) diaFolder.AllowMultiSelect = False diaFolder.Show If diaFolder.Show = -1 Then T_Str = diaFolder.SelectedItems(1) Else Set diaFolder = Nothing End If Set fld = fs.getfolder(T_Str) Dim wdOBJ As Word.Application Dim wdDoc As Object Dim fd As Object  Sheet1.UsedRange.Clear Sheet1.Range("A1") = "Document Name" Sheet1.Range("B1") = "Page Count" Sheet1.Range("A1:B1").Font.Bold = True Sheet1.Columns("A:A").ColumnWidth = 70 Sheet1.Columns("B:B").AutoFit Sheet1.Range("A1:B1").Interior.ColorIndex = 37 fs.GetSpecialFolder (1) Set wdOBJ = CreateObject("Word.Application") wdOBJ.Visible = True i = 1  For Each fd In fld.Files If (InStr(1, fd, ".doc") > 0) Or (InStr(1, fd, ".docx") > 0) Or (InStr(1, fd, ".docm") > 0) Or (InStr(1, fd, ".doct") > 0) Or (InStr(1, fd, ".pdf") > 0) Then Sheet1.Range("A" & i + 1) = fd.Name Set wdDoc = wdOBJ.Documents.Open(CStr(fd)) wdDoc.ComputeStatistics (wdStatisticPages) Sheet1.Range("B" & i + 1) = wdDoc.BuiltinDocumentProperties(14)  wdDoc.Close False End If i = i + 1 Next fd  wdOBJ.Quit False  End Sub 
-2
Wir sind keine Code-Review-Website und auch Stackoverflow. Diese Frage liegt nicht im Bereich von Superuser Ramhound vor 7 Jahren 1
Willkommen bei SuperUser. Normalerweise möchten Benutzer hier sehen, was Sie versucht haben, um Ihr Problem zu lösen. Es ist nur klar, dass Sie nicht fragen "Hey, wird jemand meine Arbeit für mich erledigen?" Wenn Sie ein wenig Details hinzufügen, die zeigen, was Sie ausprobiert haben oder welche Ideen Sie haben, aber nicht wissen, wie sie umgesetzt werden sollen, erhalten Sie mit größerer Wahrscheinlichkeit positive Bewertungen und Antworten. nixda vor 7 Jahren 0

1 Antwort auf die Frage

-1
Julian Kuchlbauer

Wenn Sie wdOBJ als spätes Binding instanziieren, sollten Sie es als Object und nicht als Word.Application dimensionieren. Danach sollten Sie die Referenz entfernen können.