我已经在这里和Google上进行了搜索,但仍然无法解决我的问题。我正在尝试在.vbs
文件中等效地使用excel的命名范围。以下内容在excel中的VBA中可用,但无法在*.vbs
文件中使用。
ThisWorkbook.Sheets(1).Range("A1:B" & Range("B" & Rows.Count).End(xlUp).Row).Name = "DATA"
strSql = "SELECT * FROM DATA"
因此,我尝试了不同的引用命名空间的变体,但是DATA
没有运气。
这就是我现在所拥有的:
Set rng = ws.Range("A1:B2")
rng = "DATA"
strSql = "SELECT * FROM DATA"
其中涉及一些不同的变化:采用参数ByVal,使用rng代替DATA(字符串类型), SELECT * FROM " & rng, etc..
运行时出现错误消息:
Microsoft(R)Windows脚本主机版本5.8版权所有(C)Microsoft Corporation。版权所有。
C:\ Users \ admin \ Desktop \ UpdateSourceTbl.vbs(119,5)Microsoft
JET数据库引擎:Microsoft Jet数据库引擎找不到对象“ DATA”。确保对象存在,并且您正确拼写了它的名称和路径名。
任何帮助,不胜感激!
临时解决方案: 我将2个参数与行号一起使用,可能不是最好的解决方案-但它可以工作!而且我看不出有什么不公平的说法
Call createAndInsertRecordSet(wb.FullName, ws.Name, i+1, j-1)
Sub CreateAndInsertRecordSet(ByVal fullname, ByVal wsName, ByVal stRow, byVal enRow )
strSql = "SELECT * FROM [" & wsName & "$B" & stRow & ":AX" & enRow & "]"
工作可能是不可预测的,有时我们不得不回去修改,修复,重用代码。今天发生了。我回过头来复制了我的代码,并使它在第一次工作。发布此问题时,我一定做错了什么,看着错误的行或程序或奇怪的东西。下面的代码运行完美。
它:
-打开工作簿
-与工作簿建立连接以检索记录集中的数据
-打开与数据库的连接并执行示例插入语句
运行代码后,我检查了临时数据库,已插入值,因此,我可以确认这是我对最初提出的问题的有效解决方案。
Option Explicit
Private Const adUseClient = 3
Dim xl, wb, ws, fPath, rng
fPath = "C:\Users\admin\Desktop\Book1.xlsm"
Call OpenFile()
Call InsertRecordset()
Call CloseFile()
Private Sub OpenFile()
Set xl = CreateObject("Excel.Application")
xl.Visible = False
Set wb = xl.Workbooks.Open(fPath)
Set ws = wb.Sheets(1)
End Sub
Private Sub CloseFile()
wb.Saved = True
wb.Close
xl.Quit
Set wb = Nothing
Set xl = Nothing
End Sub
Private Sub InsertRecordset()
strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & wb.fullname & ";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";"
Dim cn, rs, strCon, strSql, cn2
ws.Range("A1:B2").Name = "DATA"
strSql = "SELECT * FROM DATA"
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cn.Open strCon
rs.Open strSql, cn
Set cn2 = CreateObject("ADODB.Connection")
With cn2
.CursorLocation = adUseClient
.Open "Driver={SQL Server};Server=HELIUM\PRI; Database=TEMPORARY; UID=admin; PWD=password"
.CommandTimeout = 0
rs.MoveFirst
Do While Not rs.EOF
.Execute "INSERT INTO TEMPORARY.dbo.TEMP_TABLE ( [TEMP_COLUMN] ) VALUES ('" & rs.Fields(1) & "')"
rs.MoveNext
Loop
End With
' Close connections
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
cn2.Close
Set cn2 = Nothing
End Sub
我想创建一个创建ArrayList的方法,并以现有ArrayList中的元素命名每个ArrayList。 就像原来是,我希望该方法创建四个ArrayList,分别命名为abc、def、ghi和jkl。
为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?
问题内容: 我想以这种方式注入配置参数: 因此,我尝试通过这种方式实现生产者方法: 我用这种方式定义了其他bean: 但是,在尝试部署它时遇到了这个异常: 任何想法? 谢谢。 问题答案: 它看起来像你需要一个默认的(无参数)构造函数您使它proxyable。我真的不知道为什么它是需要的,因为是一个bean并因此不代理AFAIK; 老实说,我什至不知道为什么可代理bean需要一个默认的构造函数 这似
这可能只是一个简单的错误,我没有看到,但我认为我只是做错了什么。别担心,我没有在我的头函数中使用namespace std或任何似乎是这个人的问题[我读到的问题与我的类似][1][1]:为什么我会得到string不命名类型错误? 我现在有4个错误: C:\documents and settings\me\my documents\c++projects\c++\random句子\nouns.h8
我想在java中以编程方式生成xml字符串,其名称空间是自定义的,如下所示,所有数据必须以xml格式动态出现。我怎样才能达到这样的成就? 我经历过像https://howtodoinjava.com/jaxb/write-object-to-xml/这样的例子,但是当xml生成时,它的起点是 但我想要开始和结束标记
本文向大家介绍SQL中的字符串函数,包括了SQL中的字符串函数的使用技巧和注意事项,需要的朋友参考一下 SQL中的字符串函数都用于操作字符串值。SQL指定了许多字符串函数。其中一些领域如下: ASCII码(str) 此函数返回提供的字符串str中第一个单词的ASCII或数字值。如果为空字符串,则返回0。 例 这将返回S的ASCII值,即83,因为它是字符串中的第一个字符。 BIN(n) 这里n是二