我有一张excel表,有两张纸。隐藏一张表,其中包含一个名为“位置”的值列表。在主页上,我创建了一个从隐藏表中拉出的下拉菜单。
如何将这些值存储在外部文件(Excel,.txt等)中,这样我就可以点击宏按钮(VBA),用任何/所有新的位置值替换/更新隐藏工作表上的列表那将存储在外部文件中?
答案 0 :(得分:2)
我相信这就是你要找的东西:
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。
答案 1 :(得分:0)
假设包含位置的外部文件的文件路径是: “d:\ Location.xls”
Location.xls只有一个名为'sheet1'的Sheet,它具有以下结构:
Locations E:\123.txt C:\MyFolder\MyOtherFile.xls D:\MyFile.xls . . etc.
和具有两个WorkSheets的工作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