我有一張有兩張紙的Excel表。隱藏一張表,其中包含名爲「位置」的值列表。在主表上,我創建了一個從隱藏表單中拉出的下拉菜單。VBA Excel宏通過外部文件更新列表
如何將這些值存儲在外部文件(Excel,.txt等)中,這樣我就可以打開一個宏按鈕(VBA),它將使用任何/所有新位置替換/更新隱藏工作表上的列表將存儲在外部文件中的值?
我有一張有兩張紙的Excel表。隱藏一張表,其中包含名爲「位置」的值列表。在主表上,我創建了一個從隱藏表單中拉出的下拉菜單。VBA Excel宏通過外部文件更新列表
如何將這些值存儲在外部文件(Excel,.txt等)中,這樣我就可以打開一個宏按鈕(VBA),它將使用任何/所有新位置替換/更新隱藏工作表上的列表將存儲在外部文件中的值?
我相信這是你在找什麼:
Dim intPointer as Integer
Dim strFileToImport as String
Dim strLine as String
intPointer = FreeFile()
Open strFileToImport For Input Access Read Lock Read As #intPointer
Do Until EOF(intPointer)
Line Input #intPointer, strLine
SheetWithLocations.Cells(lngRow, 1).Value2 = strLine
lngRow = lngRow + 1
Loop
它打開名爲strFileToImport外部txt文件,並從txt文件的讀取一行行並將其寫入SheetWithLocations。
讓它以爲它是一個包含位置的外部文件的文件路徑是: 「d:\ Location.xls」
Location.xls只有命名爲具有以下結構「工作表Sheet1」一個表:
Locations E:\123.txt C:\MyFolder\MyOtherFile.xls D:\MyFile.xls . . etc.
和具有兩個工作表(如你上面討論的)工作Excel文件的文件路徑是 「d:\ MyWokingFileName.xls」
正如你說「MyWokingFileName.xls」具有Ť我們假設這些表是'sheet1'和'sheet2',而sheet2是隱藏的。
現在您希望sheet1上的MacroButton更新MyWokingFileName.xls的sheet2中的值。
所以對於宏的代碼如下:
Private Sub macroUpdateLocations()
Dim myCon As New ADODB.Connection
Dim myRs As New ADODB.Recordset
Dim iCounter As Long
myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Location.xls;Extended Properties=" & """Excel 8.0;HDR=Yes;IMEX=1;""" & ";"
Set myRs = myCon.Execute("SELECT * FROM `Sheet1$`")
Worksheets("sheet2").Range("A:A").ClearContents
Worksheets("sheet2").Range("A1").Value = "Locations"
iCounter = 2
Do While Not myRs.EOF
Worksheets("sheet2").Range("A" & CStr(iCounter)).Value = myRs(0)
iCounter = iCounter + 1
myRs.MoveNext
Loop
End Sub
myRs.Close
Set myRs = Nothing
myCon.Close
Set myCon = Nothing
不要忘記從VB宏編輯器窗口的參考庫中添加''microsoft activex數據對象2.1庫''作爲項目參考。 – PankajExplorer
希望這會有所幫助,而且你需要它... – PankajExplorer
你有沒有編寫任何代碼了嗎?你有沒有試過從外部文件讀取數據?以較小的步驟拆分任務並嘗試從中解決。 – gipadm
構建連接到外部工作簿的Microsoft查詢可能更容易,然後所有宏都必須刷新查詢。需要思考的東西。 –