• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dopisanie danych z programu w Visual Basic do istniejącego pliku Excel

VPS Starter Arubacloud
0 głosów
917 wizyt
pytanie zadane 13 sierpnia 2017 w Visual Basic przez vadabena Nowicjusz (120 p.)

Witam,
Piszę pewien program w Visual Basic Studio 2010 polegający na uzupełnieniu pewnych danych w TextBox, ComboBox, DateTimePicker etc. i w końcowym efekcie mają te dane zostać zapisane w przypisanych komórkach w pliku Excel po kliknięciu przycisku "Zapisz". Ten efekt udało mi się osiągnąć w poniższym kodzie. Problem mój polega na tym, że przy zapisie tracę dane, które potrzebuje mieć już zapisane w Excelu (w komórkach, których nie uzupełnia mi program). Jak zmodyfikować ten kod, by nie tracić danych, które mam już zapisane w Excelu w komórkach nie uzupełnianych przez program. Wiem, że może łatwiej by było zrobić to bezpośrednio w Excelu, lecz musi być to wykonywane przez program.

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'Create a new workbook in Excel
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet As Object
        oExcel = CreateObject("Excel.Application")
        oBook = oExcel.Workbooks.add
        oSheet = oBook.Worksheets(1)
        If NumericUpDown100.Value = "1" Then
            If TextBox121.Text = "1" Then
                oSheet.Range("F9").Value = ComboBox101.Text
            End If
        End If
        'Save the Workbook and Quit Excel
        oBook.SaveAs("G:\plik.xlsx")
        oExcel.Quit()
    End Sub

1 odpowiedź

0 głosów
odpowiedź 12 lipca 2018 przez penera Gaduła (4,040 p.)

Wiem, że temat stary, ale odpowiem, bo mam lenia i nie chce mi się pracować.

 

    oExcel = CreateObject("Excel.Application")
    oBook = oExcel.Workbooks.add
    oSheet = oBook.Worksheets(1)

W tym miejscu tworzysz nowy dokument excela i zapisując go pod nazwą plik.xlsx nadpisujesz poprzedni plik, który się tam znajduje. Dlatego odnosisz wrażenie, że skrypt czyści dane, a on po prostu podmienia cały dokument na nowo stworzony i tych danych nigdy tam nie było. 
Średnio z opisu rozumiem co chcesz zrobić ale jeżeli:
1) Skrypt masz w pliku w którym jest button i na nim chcesz dokonać akcji to po co tworzysz nowy workbook?
2) Chcesz dokonać zmian w innym pliku użyj Workbooks.open
 

Workbooks.Open ("C:\thefilepath\thefile")
ThisWorkbook.Activate

Jeżeli nie chcesz, żeby Office, przełączył Ci okna (Activate zaznaczy workbook jako obecnie używany ale też wyświetli go na wierzchu).

Dodaj linijke przed Workbooks.Open
 

Application.ScreenUpdating = False

A po .Activate
 

Application.ScreenUpdating = True

 

Podobne pytania

0 głosów
1 odpowiedź 1,975 wizyt
0 głosów
0 odpowiedzi 244 wizyt

92,455 zapytań

141,263 odpowiedzi

319,099 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...