将数据从工作簿(在文本框中)放到另一个工作簿(在工作表中)

时间:2019-04-14 00:41:32

标签: excel vba

我正在尝试将数据与2个工作簿连接。

我有一个带有一些文本框的工作簿,需要将这些文本重新分配到特定工作表中的另一个工作簿(主工作簿)上。

我试图设置一个常规的代码例程,当我运行代码以将文本框内的文本带到空行时,即使使用已声明的工作簿,我也会出现编译错误“找不到方法或数据成员” ,工作表和对象/文本框。

下面我显示一段代码。

有人可以帮助我解决此错误吗?

Dim mestre As Workbook, Servo As Workbook
Dim cadastro As Worksheet, listacadastro As Worksheet, controle As     Worksheet, listamatricula As Worksheet
Dim boxnomecompleto1 As TextBox


varmestre = Worksheets("99. Controles").Range("C19").Value
varservo = Worksheets("99. Controles").Range("C20").Value
Set mestre = Workbooks.Open(varmestre)
Set Servo = Workbooks.Open(varservo)

'range C19 and C20 had the workbook location

Set cadastro = Servo.Worksheets("01. Cadastro")
Set listacadastro = mestre.Worksheets("01. Lista Cadastro")
Set controle = Servo.Worksheets("99. Controles")
Set listamatricula = mestre.Worksheets("02. Lista de Matriculados")


n = 2000

For i = 8 To n

If listacadastro.Cells(i, 2).Value = "" Then

    listacadastro.Cells(i, 2).Value = "C" & ncadastro
    listacadastro.Cells(i, 4).Value = cadastro.boxnomecompleto1.Value

End if
Exit for

1 个答案:

答案 0 :(得分:0)

首先,我将假设您发布的代码不完整。正如注释部分已经指出的那样,存在一些问题,例如ncadastro未声明或初始化,以及For-Next循环缺少Next部分。

此外,请确保声明了varmestrevarservo变量,并在为它们分配值时使用对特定工作簿的引用。例如:

dim varmestre as string
dim varservo as string
varmestre = thisWorkbook.Worksheets("99. Controles").Range("C19").Value 'Of course it doesn't have to be ThisWorkbook necessarily. It can be anything you want.
varservo = thisWorkbook.Worksheets("99. Controles").Range("C20").Value

第二,就您的文本框而言:

如果我们要讨论的是一个简单的文本框,您是从Insert>Text>Textbox插入的,那么您可以将其声明为TextBox,但必须设置如下:

Set boxnomecompleto1= cadastro.TextBoxes("Name of your TextBox here")

Set boxnomecompleto1= cadastro.TextBoxes(n) 'where n is your textbox index n=1 for the 1st one n=2 for the 2nd one etc

然后您可以像这样访问它的值:

listacadastro.Cells(i, 4).Value = boxnomecompleto1.Text

我们正在谈论的是它是从Developer>Insert>ActiveX Controls>Text Box插入的ActiveX表单控件,因此不应将其声明为TextBox。相反,应将其声明为Object

Dim boxnomecompleto1 As Object

然后需要这样设置:

set boxnomecompleto1 = cadastro.OLEObjects("Name of your TextBox here").Object

set boxnomecompleto1 = cadastro.OLEObjects(n).Object 'where n is your object index n=1 for the 1st one n=2 for the 2nd one etc

然后您可以像这样访问其值:

listacadastro.Cells(i, 4).Value = boxnomecompleto1.Text