2016-02-05 2 views
1

У меня есть следующий код VB, который использует определенные значения ячейки (используется для фиксированного местоположения) файла базы данных DB, чтобы называть текущий рабочий лист и сохранять его в определенной папке с использованием ActiveX кнопка. Однако расположение столбцов начало меняться в исходном файле, а диапазоны VB больше не выбирают правильные данные для автоматического имени файла. Я создал формулы (ниже), чтобы найти правильные значения, которые мне нужно использовать для автоматического имени файла. Как вставить эти формулы в мой код VB, чтобы он мог выполнять работу?условно автоматическое имя файла excel с использованием VBA

Private Sub CommandButton1_Click() 
Dim Path As String 
Dim FileName1 As String 
Dim FileName2 As String 
Dim FileName3 As String 
Dim str As String, strLeft As String 
str = Range("A7") 
strLeft = Left(str, 9) 
FileName1 = strLeft 
FileName2 = RepCh(Range("B7").Value) 
FileName3 = RepCh(Range("C7").Value) 
Path = "…" 
ActiveWorkbook.SaveAs FileName:=Path & FileName1 & "_" & FileName2 & "_" & FileName3 & "_" & ".xls", FileFormat:=xlCSV 
End Sub 

Формулы:

=LEFT(INDEX($A$7:$AZ$7,MATCH("Departure",$A$6:$AZ$6,0)), SEARCH("",INDEX($A$7:$AZ$7,MATCH("Departure",$A$6:$AZ$6,0)),9)) 

=INDEX($A$7:$AZ$7,MATCH("Vessel Name",$A$6:$AZ$6,0)) 

=INDEX($A$7:$AZ$7,MATCH("Voyage Number",$A$6:$AZ$6,0)) 
+4

Посмотри на 'функции APPLICATION.EVALUATE' УВЫ. –

ответ

1

Там более эффективные способы, чем у меня, но иногда я просто пишу формулы в строковую переменную, и сохраняем переменную строку.

Однако, если у вас есть ", вам необходимо разделить формулу на несколько строк и объединить с & каждый раз, когда у вас есть кавычка. (То есть - заменить все " с Chr(34))

В качестве примера для верхней формулы:

Dim vFormula1 As String 
Dim vFormula2 As String 
Dim vFormula3 As String 

'Set up formula into string variable 
vFormula1 = "=LEFT(INDEX($A$7:$AZ$7,MATCH(" & Chr(34) & "Departure" & Chr(34) & ",$A$6:$AZ$6,0)), SEARCH(" & Chr(34) & Chr(34) & ",INDEX($A$7:$AZ$7,MATCH(" & Chr(34) & "Departure" & Chr(34) & ",$A$6:$AZ$6,0)),9))" 
vFormula2 = "=INDEX($A$7:$AZ$7,MATCH(" & Chr(34) & "Vessel Name" & Chr(34) & ",$A$6:$AZ$6,0))" 
vFormula3 = "=INDEX($A$7:$AZ$7,MATCH(" & Chr(34) & "Voyage Number" & Chr(34) & ",$A$6:$AZ$6,0))" 


'Then Put formula into a cell range 
'Set sheet range here if needed 
Range("A1") = vFormula1 
Range("A2") = vFormula2 
Range("A3") = vFormula3 

'Then save code goes here 
    'blah blah blah save files. 
+0

Спасибо за предложение, но я немного потерял, так как я новичок в кодах VBA. Я не уверен, как поместить формулу в диапазон ячеек и как это изменит мой код сохранения имени файла. – Kursat

Смежные вопросы