2014-10-01 4 views
0

В настоящее время я работаю над приложением, которое добавляет к существующим электронным таблицам Excel при вводе данных. Простое право? У меня возникла проблема с поиском информации о форматировании рабочего листа («Границы», «Создание гиперссылок», «Фоновые цвета» и т. Д.). Я искал повсюду, и большая часть того, что я нахожу, не будет работать для меня. Я запускаю Visual Studio Pro 2013. Смысл intelli, похоже, не работает с большинством материалов Excel на моем компьютере по какой-либо причине, есть ли сайт или что-то, что перечисляет функции и как обращаться к ним? Я ссылался на библиотеку объектов Microsoft Excel 15.0 в COM-части диспетчера ссылок, а также на Microsoft Office Tools Excel в сборках.Использование функций Excel с помощью vb.net (границы и т. Д.)

Вот мой код:

Imports Excel = Microsoft.Office.Interop.Excel 
Imports Microsoft.Office.Tools.Excel 
Imports Microsoft.Office.Core 
Imports System.Reflection 
Imports System.IO 

    Dim oExcel As Excel.Application 
    Dim oBook As Excel.Workbook 
    Dim oSheet As Excel.Worksheet 

    If jobnumtext.Text.Length > 2 And provincetext.Text.Length > 0 And contractnumbertext.Text.Length > 2 And clienttext.Text.Length > 0 Then 

     thisdate = DateTime.Now 
     thismonth = Month(thisdate) 
     name = MonthName(thismonth, True) 

     oExcel = CreateObject("Excel.Application") 
     oBook = oExcel.Workbooks.Open("\\IP Address\qa_qc\003. Quality Management\005. Project Management\Project Logs\Job Set Up\Job Set Up Log_Current.xlsx") 
     oSheet = oBook.Worksheets(name.ToString()) 

     Dim sheet As Worksheet = oExcel.ThisWorkbook.Worksheets(0) 

     Try 
     With oSheet 
       If oExcel.WorksheetFunction.CountA(.Cells) <> 0 Then 
        lrow = .Cells.Find(What:="*", 
             After:=.Range("A1"), 
             LookAt:=Excel.XlLookAt.xlPart, 
             LookIn:=Excel.XlFindLookIn.xlFormulas, 
             SearchOrder:=Excel.XlSearchOrder.xlByRows, 
             SearchDirection:=Excel.XlSearchDirection.xlPrevious, 
             MatchCase:=False).Row 
       Else 
        lrow = 1 
       End If 
      End With 

      oSheet.Range("A" & lrow + 1).Value = dateissued.Text 
      oSheet.Range("B" & lrow + 1).Value = contractnumbertext.Text 
      oSheet.Range("C" & lrow + 1).Value = clienttext.Text 
      oSheet.Range("D" & lrow + 1).Value = provincetext.Text 
      oSheet.Range("E" & lrow + 1).Value = locationtext.Text 
      oSheet.Range("F" & lrow + 1).Value = attentiontext.Text 
      oSheet.Range("G" & lrow + 1).Value = foremantext.Text 
      oSheet.Range("H" & lrow + 1).Value = peopletext.Text 
      oSheet.Range("I" & lrow + 1).Value = setupbytext.Text 
      oSheet.Range("J" & lrow + 1).Value = startdate.Text 
      oSheet.Range("K" & lrow + 1).Value = enddate.Text 
      oSheet.Range("L" & lrow + 1).Value = Pipeline.ToString() 
      oSheet.Range("M" & lrow + 1).Value = facility.ToString() 
      oSheet.Range("N" & lrow + 1).Value = hourly.ToString() 
      oSheet.Range("O" & lrow + 1).Value = holdback.ToString() & " " & holdbackstext.Text & b.ToString() 
      oSheet.Range("P" & lrow + 1).Value = Discounts.ToString() & " " & discountstext.Text & dis.ToString() 
      oSheet.Range("Q" & lrow + 1).Value = LOA.ToString() & " " & lo.ToString() & loatext.Text 
      oSheet.Range("R" & lrow + 1).Value = RateSchedule.ToString() & " " & rateschedtext.Text 
      oSheet.Range("S" & lrow + 1).Value = WPS.ToString() & " " & wpstext.Text 
      oSheet.Range("T" & lrow + 1).Value = projectdesctext.Text 
      oSheet.Range("U" & lrow + 1).Value = filesname.ToString() 

      oSheet.Columns("A:T").WrapText = True 
      oSheet.Columns("A:T").AutoFit() 
      oExcel.ActiveSheet.Columns("A:A").ColumnWidth = 10 
      oExcel.ActiveSheet.Columns("B:B").ColumnWidth = 17 
      oExcel.ActiveSheet.Columns("C:C").ColumnWidth = 20 
      oExcel.ActiveSheet.Columns("D:D").ColumnWidth = 17 
      oExcel.ActiveSheet.Columns("E:E").ColumnWidth = 16 
      oExcel.ActiveSheet.Columns("F:F").ColumnWidth = 12 
      oExcel.ActiveSheet.Columns("G:G").ColumnWidth = 12 
      oExcel.ActiveSheet.Columns("H:H").ColumnWidth = 10 
      oExcel.ActiveSheet.Columns("I:I").ColumnWidth = 12 
      oExcel.ActiveSheet.Columns("J:J").ColumnWidth = 10 
      oExcel.ActiveSheet.Columns("K:K").ColumnWidth = 10 
      oExcel.ActiveSheet.Columns("L:L").ColumnWidth = 8 
      oExcel.ActiveSheet.Columns("M:M").ColumnWidth = 8 
      oExcel.ActiveSheet.Columns("N:N").ColumnWidth = 15 
      oExcel.ActiveSheet.Columns("O:O").ColumnWidth = 15 
      oExcel.ActiveSheet.Columns("P:P").ColumnWidth = 15 
      oExcel.ActiveSheet.Columns("Q:Q").ColumnWidth = 15 
      oExcel.ActiveSheet.Columns("R:R").ColumnWidth = 15 
      oExcel.ActiveSheet.Columns("S:S").ColumnWidth = 20 
      oExcel.ActiveSheet.Columns("T:T").ColumnWidth = 80 
      oExcel.ActiveSheet.Columns("U:U").ColumnWidth = 20 

      oBook.Save() 
      oBook.Close() 
      oSheet = Nothing 
      oBook = Nothing 
      oExcel.Quit() 
      oExcel = Nothing 
      GC.Collect() 

     Catch ex As Exception 
      MsgBox(ex.ToString()) 
      oExcel.Quit() 
      GC.Collect() 
     End Try 
    Else : MessageBox.Show("Sorry you must input all information to Continue!", "Missing Information", MessageBoxButtons.OK, MessageBoxIcon.Error) 
    End If 

Я хочу, чтобы создать гиперссылку на столбец «U» совершенно не знаю, как .. Кроме того, я хотел бы добавить границы для каждой новой записи в документе ,

Я не уверен, как все работает со ссылками на библиотеки в excel, любая информация поможет или будет так высоко оценена!

Спасибо всем!

ответ

1

Научи человека ловить рыбу ...

Поскольку у вас есть основы создания ссылок на ваши листы и прочее, это будет легко. Я делаю запись макроса в MS Excel и вижу, что такое VBA. Затем сделайте то же самое в моем коде VB. Используя эту концепцию, вы можете делать все, что хотите, без необходимости неустанно искать в Интернете ключевые слова, которые вы даже не знаете.

+0

Я продолжаю получать нарушения параметров ... вот что я придумал: oExcel.Range («U» и lrow.ToString()). Выберите() oExcel.ActiveSheet.Hyperlinks. Добавить (Адрес: = "\\ Местоположение файла \ qa_qc \ 003. Управление качеством \ 005.Project Management \ Project Logs \ Job Set Up ") –

+0

Извините, я явно не знаю, как правильно использовать эти поля комментариев. –

+0

Ваш intellisense должен показать вам, что вам нужно как минимум 2 параметра в методе' add() ' Первый из них - ваш диапазон, а второй - ваш адрес. Вы заметите, что ваш метод Range.Select() 'возвращает объект« Range ». Поместите это в переменную и передайте это как параметр« Anchor ». : http://msdn.microsoft.com/en-us/library/office/ff822490.aspx – Steve

0

Что-то вроде этих линий должно сделать трюк. Я просто протестировал это на своем ПК, также работая VS2013. Это добавит гиперссылку в столбце E в столбец U в той же строке.

Private Sub Sheet1_Change(Target As Microsoft.Office.Interop.Excel.Range) Handles Me.Change 

    Dim activeSheet As Excel.Worksheet = CType(Me.Application.ActiveWorkbook.Sheets(1), Excel.Worksheet) 

    Dim jobnum As Int32 = CType(Range("A" + Target.Row.ToString()).Value, Int32) 

    If (jobnum > 1) 
     Application.EnableEvents = False 
     activeSheet.Hyperlinks.Add(activeSheet.Range("E" + Target.Row.ToString()), "", "U" + Target.Row.ToString()) 
     Application.EnableEvents = True 
    End If 

End Sub 
+0

Okay on quick question sorry, + Target.Row.Tostring() Если I Dim Target As String = "Location File", я получаю строку не является членом «String» –

-1

Извините, что опубликовать это как ответ было слишком большим, чтобы вписаться в раздел комментариев.
Сейчас я получаю:

System.Runtime.InteropServices.COMException (0x80010105): The server threw an exception..... at Microsoft.Office.Interop.Excel.Hyperlinks.Add(Object Anchor, String Address, Object SubAddress, Object SreenTip, Object TextToDisplay)

Я просто хочу уточнить одну вещь ... Я использую:

Dim activesheet as Excel.Worksheet = CType(oExcel.Application.ActiveWorkbook.Sheets(name.ToString()), Excel.Worksheet) 
With oExcel.Worksheets(name.ToString()) 
Dim rng as String = oExcel.Range("U10").Select() 
activesheet.Hyperlinks.Add(Anchor:=rng, Address:="File Location") 
End With 

Метод Range.Select() возвращает истину или ложь, которая не кажется правильным мне ...

Я попробовал магнитофон Excel, это то, что он мне дал:

Range("U1").Select 
ActiveSheet.Hyperlinks.Add Anchor:=Selection, 
Address:="File Location", 
TextToDisplay:=_ 

Могу ли я получить какое-то направление, чтобы включить это сейчас, для Intellisense для отображения Activesheet Я должен использовать oExcel.ActiveSheet, это то же самое? Я назначил oExcel as Excel.Application ранее в своем коде. Я прошу прощения за то, что не понимаю, это почему-то меня сбивает с толку ...

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