2016-06-21 74 views
0

我在尝试一些更加奇特的事情,并且在访问论坛上发布了帖子,在那里我没有任何回应,也没有访问程序员,在那里我获得了更多阅读材料的链接,但是没有帮助我 - 可能是由于我缺乏VBA的专业知识。 我已经做了很多其他的编程,比如PHP和Arduino,但是VBA对于我来说是新的,虽然我一直在观看几个小时的视频,但它们并不完全涵盖我想要做的事情。使用VBA更改链接到Access 2011的Excel文件的路径

经过4天的研究失败的尝试,我简化了我的方法,我将不胜感激一些真正的帮助与实际的代码。

场景: 我有多个Excel源文件,每个文件包含9个选项卡。 所有源文件都位于同一个目录中(与数据库不在同一目录中) 只有一个源连接。 源文件的每个选项卡都是Access中的链接表。

目标: 我希望定期切换源文件。

方法: 我只想替换使用特定文件的9张/选项卡中的每一个的连接文件属性(即完整文件路径)。 完整路径必须从我的表单中“拾起”并应用于事件,例如关闭表格。

进度: 我已经构建了一个表单,可以在其中输入要使用的文件名,并计算相关文件的完整路径。 我在窗体上有一个按钮,用于关闭窗体。

代码:

Private Sub Form_Close() 
Dim dbs As Database 
Dim tdf As TableDef 
Dim sfl As String 
Dim basePath As String 
Dim sName As String 

Set dbs = CurrentDb 
Set sfl = "SourceData_" 
Set sName = "JoeSmith" 
Set basePath = "D:\Databases\BOM Consolidator\data_source" 

' Loop through all tables in the database. 
For Each tdf In dbs.TableDefs 
    If InStr(10, tdf.Connect, sfl, 1) > 10 Then 
     tdf.Connect = ";DATABASE=" & basePath & sfl & sName & "\" & dbs 
     Err = 0 
     On Error Resume Next 
     tdf.RefreshLink  ' Relink the table. 
     If Err <> 0 Then 
     End If 
    End If 
Next tdf End Sub 

在上面,我是在进入路径等直接只是为了得到它第一个工作日。 访问愣:( 帮助,将不胜感激。 发布此之前,我尝试重新启动。

+0

您是否尝试过单步执行代码并对其进行调试,以便确定访问开始冻结的位置? – lokusking

回答

0

它没有冻结后重新启动。 它说我有一个丢失的对象。 第一行以黄色突出显示,所以我认为一定要在圆括号内,但不知道是什么。

如果它是一个函数,我通常会把一个未在函数内部声明的变量,这是一个子例程,我没有期待它要求什么...

最终我会把它变成一个函数,soth在我可以提供文件名。

第一行需要哪些线索?...?

哦,我也使用“代码生成器” - 是关闭表单使用正确的选项?

相关问题