私は作業プロジェクトとは異なるアプローチをとっており、私は壁に乗っています。私はGoogleに考えてもらえるものはすべてGoogleにあり、S.Oに戻る前に複数のフォーラムを検索しました。より多くの助けを求める。 Accessには、ユーザーが顧客/部門の組み合わせを入力し、その顧客の既存のファイルパスが存在することを確認した後、テンプレートファイルを開き、顧客固有のファイル名で正しいフォルダに保存するフォームがあります。これはすべて正常に動作しているようです。ここに私が完全に困惑している部分があります。次の部分は、ワークブックを変数xlWB1とxlWB2、ワークシートをxlWS1とxlWS2(Sheet1)として割り当てているExcelファイルを2つ開くことです。私はxlWB1.xlWS1(セルD2)で開始し、xlWB2.xlWS2.Range(D2:D1937)の範囲のセルの値に対して、そのセルの値(項目番号)でVLookupを実行する必要があります。私の希望は、VLookupを開始する前に各ワークシートの行の総数を数えて、その値を変数に代入し、その変数を使用して範囲の下限を定義できるようにすることでした。私は、これに対する答えが単純なものであれば、事前に謝罪するつもりです。私はVBAを使用してAccessからExcelで操作を実行しようとしたことは一度もなかったので、構文にも苦労しています。私の質問が明確でない場合、または必要な追加情報がある場合はお知らせください。私は下に私の開始コードを貼り付けました。MS Access 2010の2つのオープンスプレッドシート間の動的なVLookupのVBAコード
更新コードは誰でも使用する必要があります!あなたはすべての助けをありがとう!
Sub modExcel_SixMonth()
Const WB_PATH As String = "\\FMI-FS\Users\sharp-c\Desktop\TestDir\"
Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook
Dim xlWS As Excel.Worksheet
Dim xlRng As Excel.Range
Dim rCount As Long
Dim xlWB2 As Excel.Workbook
Dim xlWS2 As Excel.Worksheet
Dim rCount2 As Long
Dim sFormula As String
Dim i As Long
Dim xlSheetName As String
Dim bolIsExcelRunning As Boolean
On Error Resume Next
Set xlApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Set xlApp = CreateObject("Excel.Application")
Else
bolIsExcelRunning = True
End If
xlApp.Visible = False
Set xlWB = xlApp.Workbooks.Open(WB_PATH & "acct 900860 Kentucky RSTS.xlsx")
Set xlWS = xlWB.Sheets(1)
Set xlWB2 = xlApp.Workbooks.Open(WB_PATH & "acct 900860 six months.xlsx")
Set xlWS2 = xlWB2.Sheets(1)
xlSheetName = xlWS2.Name
' rCount: RSTS Row Count
rCount = xlWS.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
Debug.Print "rCount : " & rCount
' rCount2: 6 Months Row Count
rCount2 = xlWS2.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count
Debug.Print "rCount2 : " & rCount2
xlWS.Activate
With xlWS
For i = 2 To rCount
sFormula = "=VLOOKUP(C" & i & ", '" & WB_PATH & "[" & "acct 900860 six months.xlsx" & "]" & _
xlSheetName & "'!$D$2:$D$" & rCount2 & ", 1, 0)"
Debug.Print sFormula
.Range("D" & i).Formula = sFormula
DoEvents
Next
End With
xlWB.Save
xlWB2.Close False 'Closes WB Without Saving Changes
Set xlWB2 = Nothing
Set xlWS = Nothing
xlWB.Close
Set xlWB = Nothing
If Not bolIsExcelRunning Then
xlApp.Quit
End If
Set xlApp = Nothing
End Sub
...両方のワークブックのためのエクセルの単一のインスタンスを必要とするだけそれを(たくさんの)読みやすくするために? – mkingston