簡體   English   中英

如何從Word遍歷Excel工作表

[英]How to loop through an excel sheet from word

我正在努力尋找如何從單詞中遍歷Excel中的所有行。 我要實現的是,如果excel的WP列中有內容,請使用該文件名保存活動的worddocument。 但是我無法弄清楚獲取最后一行(可能是中間的空行)的簡單方法,我只是得到錯誤代碼424,根據MSDN,這沒有給我任何真正的提示是怎么回事。 有什么想法怎么了?

Public Sub test()
Dim xlapp As Object
Set xlapp = CreateObject("Excel.Application")

myFileName = "Z:\Dokumentstyring\UnderArbeid\PARTSLIST.xlsm"
xlapp.Workbooks.Open myFileName
xlapp.Application.ScreenUpdating = False
xlapp.Visible = False

a = xlapp.sheets("List").Range("A1").Value
b = firstBlankRow(xlapp)
c = getColumn("WP", xlapp)

xlapp.Application.ScreenUpdating = True
xlapp.ActiveWorkbook.Close (True)
xlapp.Quit
Set xlapp = Nothing
End Sub

我的函數接收最后一行:

 Function firstBlankRow(ByRef xlapp) As Long
 'returns the row # of the row after the last used row
 'Or the first row with no data in it

With xlapp.sheets("List")
    '~~> Check if there is any data in the sheet
    'If xlapp.WorksheetFunction.CountA(.Cells) <> 0 Then
        firstBlankRow = .Range("A" & .Rows.Count).End(Excel.XlDirection.xlUp).Row
    'Else
        firstBlankRow = 1
    'End If

End With
End Function

這是我獲取列號的功能

Public Function getColumn(header As String, ByRef xlapp) As Integer
    Dim rng1 As Range
    With xlapp.sheets("List")
        Set rng1 = .Range(.Cells(1, 1), .Cells(1, Columns.Count)).Find(header, , xlValues, xlWhole)
        If Not rng1 Is Nothing Then
            getColumn = rng1.Column
        Else
            MsgBox "Column " & header & " does not exist, Typo??", vbCritical
            getColumn = -1
        End If

    End With
End Function

根據我們在評論中的對話,將Dim Rng1 As Range更改為Dim Rng1 As Object

您可以找到XlDirectionXlvaluesxlwhole枚舉的實際值。

最好這樣做是最好的:

Private Const xlUp as long = -4162 
'and so on

EDIT1:

這是一個經過調整的功能,可以解決您的問題(我已經在機器上對其進行了測試)

Public Function getColumn(header As String, ByRef xlapp) As Long
        Dim rng1 As Object
        With xlapp.sheets("List") 
            Set rng1 = .Range(.Cells(1, 1), .Cells(1, .Columns.Count))
            If rng1 Is Nothing Then
            MsgBox ("ERROR: Range object is empty.")
            getColumn = -1
            Exit Function
            End If
            For Each m In rng1
            If m = "WP" Then
            getColumn = m.Column
            Exit Function
            End If
            Next m
            MsgBox "Column " & header & " does not exist, Typo??", vbCritical
            getColumn = -1
       End With
    End Function

暫無
暫無

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

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