0

以下の VBA コードは、1) 別のファイル内のセルの範囲を選択すること、2) アクティブなファイルに新しい列を挿入すること、3) 列 C の各行を通過するときに、セル範囲内の対応する値を検索することを想定しています。 #1からの別のファイルで 4)検索している列の隣の列に値を入力します

しかし、それは機能していないだけで、初心者の何が悪いのかわかりません。助けてください。

Sub Translate()
Dim PartName As String
Dim CellName As String
Dim PartNameList As Range
Dim i As Integer

Set PartNameList = Workbooks("C:\Users\" "\Desktop\Part name translation.xlsx").Worksheets("Reference").Range("A1:B2000")

Worksheets("Initial").Columns("D").Insert
For i = 2 To Range("C2:C3000").Count
    If IsEmpty("C" & i) = True Then Exit For
    PartName = WorksheetFunction.VLookup(Range("C" & i), PartNameList, 2, False)
    Range("C" & i).Value = PartName
Next i

End Sub
4

1 に答える 1

1

有効なワークブック名​​を渡していません:

 Set PartNameList = Workbooks( _
    "C:\Users\" "\Desktop\Part name translation.xlsx"). _
    Worksheets("Reference").Range("A1:B2000")

環境変数が欠落しているようです。これで修正されるはずです。

dim uName as String: uName = Environ("Username")
Set PartNameList = Workbooks( _
    "C:\Users\" & uName & "\Desktop\Part name translation.xlsx"). _
    Worksheets("Reference").Range("A1:B2000")

ただし、ワークブックが既に開いている場合は、そのように完全に修飾する必要はありません。ファイル名だけを使用できます。

Set PartNameList = _
   Workbooks("Part name Translation.xlsx").Worksheets("Reference").Range("A1:B2000")

最後に、ワークブックが開いていない場合は、まず開く必要があると思います。

dim uName as String: uName = Environ("Username")
dim wbPartName as Workbook
Set wbPartName = Workbooks.Open( _
    "C:\Users\" & uName & "\Desktop\Part name translation.xlsx")
Set partNameList = wbPartName.Worksheets("Reference").Range("A1:B2000")
于 2013-05-22T21:15:44.003 に答える