2016-11-22 2 views
1

У меня есть следующая кодировка, и я изо всех сил пытаюсь ввести данные из моей пользовательской формы в файл Excel, который мой код откроется. Я попытался ввести кодировку, которая позволяет Коду продолжать работу после того, как я нажал кнопку submit на моей пользовательской форме, но не потерял данные или просто не ввел ее в файл Excel, который я выбрал. Поэтому я не могу скопировать необходимые данные из Excel в файл слова.Как я могу использовать входные данные из пользовательской формы для слова, которое будет позже вставлено в файл excel, который откроет мой код

Sub Data() 

    UserForm1.Show 'show the userform 

    Dim exl As Object 'exl ist der Verweis auf Excel 
    Dim oExl As Object 

    Dim ImportDatei As Variant 


    Set exl = CreateObject("excel.application") 
    ImportDatei = exl.Application.GetOpenFilename(FileFilter:="Microsoft Excel-Dateien (*.xlsm), *.xlsm", Title:="Eine Datei auswählen") 'ab exl. wir der Excel Befehl angefügt 
    If ImportDatei = False Then Exit Sub 


    exl.Workbooks.Open (ImportDatei) 
    exl.Visible = True 

    'Input data into the excel field 
    exl.Range("C1").Select 'Select the cell 
    exl.ActiveCell.FormulaR1C1 = TextBox1 'Insert the input Value in the cell 
    exl.ActiveSheet.Range("$A$5:$D$65").AutoFilter Field:=1, Criteria1:="<>" ' Filtern 


    ' Product (variante) copy and formating 
    exl.Range("A1:A1").Copy 
     Selection.PasteAndFormat (wdFormatPlainText) 
     Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend 
     Selection.Style = ActiveDocument.Styles("Heading 2") 
     Selection.MoveDown Unit:=wdLine, Count:=1 
     Selection.InsertBreak Type:=wdLineBreak 'Insert line space 

    ' Copy other relevant info 
    exl.Range("A5:A7").Copy 
     Selection.PasteAndFormat (wdFormatPlainText) 
     Selection.InsertBreak Type:=wdLineBreak 

    'Copy table 
    exl.Range("A8:D79").Copy 
     Selection.Paste 
     Selection.InsertBreak Type:=wdLineBreak 
     Selection.InsertBreak Type:=wdLineBreak 
End Sub 
+0

Удалил мой ответ, поскольку он не работал на вас, к сожалению, я буду занят всю оставшуюся неделю, чтобы не помогать дальше, извинения. –

ответ

0

Не видя форм-код, я бы сказал:

Вы теряете сохраненные переменные из этой формы, потому что, как подпрограмма или функция заявления и назначения, сделанные в нем сохраняются только локально.

Например, если этот код в форму:

Input_Button_Click() 

Dim This_String As String 
This_string = Textbox1.Value 

End Sub 

И еще к югу, даже если его в том же модуле будет:

Sub Show_Box_Text() 

MsgBox This_String 

End Sub 

бы показать пустой MessageBox.

Thats потому, что This_String доступен только в пределах области Userform, Sub или Function, в которой она объявлена.

Solution1: Вызов другого к югу от в виде кода с аргументами из формы как:

Input_Button_Click() 

Dim This_String As String 
This_string = Textbox1.Value 
Call Show_Text_Box(This_String) 'calls another sub or fucntion with argument This_String 

End Sub 

Sub Show_Box_Text (This_String as String) 
'now requires to be called with 1 argument of type String, 
'wich it will, for the duration of this sub refer to as This_String 
'name in the calling sub doesnt need to match This_String 
MsgBox This_String 

End Sub 

Покажет текстовое поле с правой значением или:

Solution2 : общественное Переменные на месте;

Public This_String as String 'now publicly available 

В или «Документ» код «Рабочая тетрадь»

Wich могут быть назначены в любом месте в пределах рабочей книги/документ, выполнив:

Input_Button_Click() 

Thisworkbook.This_String = Textbox1.Value 

End Sub 

Sub Show_Box_Text() 

MsgBox Thisworkbook.This_String 

End Sub 

Это ИМО easyest решения ваших проблема.

+0

Привет, я попытался добавить эти изменения в свой код, но он не работает. Я загрузил свой код здесь, не могли бы вы показать мне, где эти изменения войдут в мой код? – Max

+0

Private Sub Capturedata_Click() Thisworkbook.This_String = TextBox1.Value End Sub Private Sub UserForm_Click() MsgBox Thisworkbook.This_String End Sub – Max

+0

Я попробовал код, но он не работал по какой-то причине. – Max