VBA Excel Pobieranie danych z różnych plików

autor: http://www.hackwars.pl/vba-excel-pobieranie-danych-roznych-plikow/

ThisWorkbook.Path – Właściwość Path skoroszytu Excela określa pełną ścieżkę katalogu, w którym znajduje się dany plik – dzięki czemu możemy sobie odpuścić ścieżkę F:\Problem_solving, i dzięki czemu gdzie byśmy nie przenieśli katalogu głównego (Problem_solving) makro nadal będzie działać.
Workbooks.Open(Filename:=plik) – metoda odpowiedzialna za otwarcie konkretnego pliku
wb.Saved = True – zapisywanie otwartych plików – dzięki czemu przed zamknięciem nie będzie excel wyświetlał powiadomień z zapytaniem czy zapisać.
wb.Close – metoda Close – zamyka plik

 

KOD DLA POTOMNOŚCI 

Sub problem_solving()
Application.ShowWindowsInTaskbar = False ‚ wyłaczamy aktualizacje taskbara
Application.ScreenUpdating = False ‚ wylaczamy aktualizacje tego co sie dzieje na ekranie podczas pracy makra
Dim kom1 As Range ‚ zestawienie
Dim kom2 As Range ‚ filestocheck
Dim newkom1 As Range ‚ arkusz1 – dla plików z których pobieramy dane

For Each kom1 In Sheets(„zestawienie”).Range(„a4:a15”) ‚ zakres w arkuszu zestawienie w ktorym znajduja sie nazwy dzialow

‚tworzymy i zerujemy sobie zmienne dla kazdego miesiaca
styczen = 0
luty = 0
marzec = 0
kwiecien = 0
maj = 0
czerwiec = 0
lipiec = 0
sierpien = 0
wrzesien = 0
pazdziernik = 0
listopad = 0
grudzien = 0
starsze = 0
rest = 0

For Each kom2 In Sheets(„FilesToCheck”).Range(„A4:a15”) ‚ zakres w arkuszu FilesToCheck w ktorym znajduja się nazwy dzialow
brak_pliku = False
If (kom1.Value = kom2.Value) Then ‚jesli dzial z zestawienia bedzie sie rownal dzialowi z filestochec to wykonaj to:
lokalizacja = kom2.Offset(0, 1).Value
nazwa_pliku = kom2.Offset(0, 2).Value
kol = kom2.Offset(0, 3).Value ‚ kolumna która należy przeszukiwac w plikach do sprawdzenia
wier = kom2.Offset(0, 4).Value ‚ wiersz od ktorego należy rozpocząć przeszukiwania w plikach do sprawdzenia
plik = ThisWorkbook.Path & „\” & lokalizacja & „\” & nazwa_pliku ‚ sciezka do konkretnego pliku

If Dir(plik) <> „” Then ‚ sprawdzamy czy plik jest pusty / jesli nie jest to wchodzimy do środka
Set wb = Workbooks.Open(Filename:=plik) ‚ ustawiamy zmienna wb na dany skoroszyt

wb.Worksheets(„Arkusz1”).Range(kol & wier).End(xlDown).Select ‚ szukamy ostatniego wiersza do przeszukiwania
ostatni_wier = ActiveCell.Row + 1 ‚ ustawiamy ostatni wolny wiersz

For Each newkom1 In wb.Worksheets(„Arkusz1”).Range(kol & wier & „:” & kol & ostatni_wier) ‚ sprawdzamy zakres danych w plikach z których chcemy zebrać dane

If (newkom1.Value = „S”) Then
rok = Year(newkom1.Offset(0, -2).Value)
miesiac = Month(newkom1.Offset(0, -2).Value)

If (rok < Year(Now)) Then

starsze = starsze + 1

Else ‚(rok < Year(Now))

Select Case miesiac ‚ instrukcja warunkowa case dzięki której mozemy podliczyć otwarte projekty w zależności od miesiąca
Case 1: styczen = styczen + 1
Case 2: luty = luty + 1
Case 3: marzec = marzec + 1
Case 4: kwiecien = kwiecien + 1
Case 5: maj = maj + 1
Case 6: czerwiec = czerwiec + 1
Case 7: lipiec = lipiec + 1
Case 8: sierpien = sierpien + 1
Case 9: wrzesien = wrzesien + 1
Case 10: pazdziernik = pazdziernik + 1
Case 11: listopad = listopad + 1
Case 12: grudzien = grudzien + 1
Case Else: rest = rest + 1
End Select

End If ‚ else (rok < Year(Now))

End If ‚(newkom1.Value = „S”)

Next ‚ end newkom1

wb.Saved = True ‚ zapisujemy plik
wb.Close ‚ zamykamy

Else
brak_pliku = True
Exit For

End If ‚ Dir(plik) <> „”

End If ‚(kom1.Value = kom2.Value)

Next
‚ zapisujemy dane w arkuszu zestawienie w odpowiednich komórkach (offset – przypisuje do odpowiedniego miesiaca – jest to przesunięcie względem komórki która przeszukujemy)
kom1.Offset(0, 1).Value = styczen
kom1.Offset(0, 2).Value = luty
kom1.Offset(0, 3).Value = marzec
kom1.Offset(0, 4).Value = kwiecien
kom1.Offset(0, 5).Value = maj
kom1.Offset(0, 6).Value = czerwiec
kom1.Offset(0, 7).Value = lipiec
kom1.Offset(0, 8).Value = sierpien
kom1.Offset(0, 9).Value = wrzesien
kom1.Offset(0, 10).Value = pazdziernik
kom1.Offset(0, 11).Value = listopad
kom1.Offset(0, 12).Value = grudzien
kom1.Offset(0, 13).Value = starsze
kom1.Offset(0, 15).Value = rest

kom1.Offset(0, 14).Value = brak_pliku
Next

Application.ScreenUpdating = True
Application.ShowWindowsInTaskbar = ShwWndsTask

End Sub

VBA Opisy post poleceń

autor http://www.hackwars.pl/vba-excel-automatyczne-tworzenie-arkuszy-o-okreslonej-nazwie/

 

Worksheets.Count – zwraca liczbę arkuszy w skoroszycie
Sheets.Add(After:=Sheets(Worksheets.Count)) – dodaje nowy arkusz po bieżącym
WS.Name = MonthName(i, True) – zmienia nazwę ustawionego skoroszytu na skrót nazwy kolejnego miesiąca (gdybyśmy chcieli użyć nazwy całego miesiąca zmieniamy wartość True na False)

 

Opis

tym wpisie przedstawiam jak automatycznie utworzyć 12 arkuszy, których nazwa jest skrótem każdego miesiąca.

Na początku utwórzmy nowy plik Excela z obsługą makr.
Jeśli w pliku znajduje się więcej niż jeden arkusz należy usunąć nadwyżkę:)

 

Public Sub DodajArkusze()
‚deklarowanie zmiennych
Dim i As Integer
Dim WS As Worksheet

i = 1

‚rozpoczęcie pętli
For i = 1 To 12

If i > Worksheets.Count Then
‚jeśli i jest większa od liczby arkuszy w skoroszycie (pliku) to
‚ustawia zmienną WS na nowo dodany arkusz
Set WS = Sheets.Add(After:=Sheets(Worksheets.Count))

Else
‚ustawia zmienna WS na pierwszy arkusz z pętli
‚tu pętla zagląda tylko za pierwszym razem
Set WS = Sheets(Worksheets.Count)

End If
‚zmienia nazwę aktualnie ustawionego arkusza na skrót nazwy miesiąca
WS.Name = MonthName(i, True)

‚zwiększa wartość zmiennej i o 1
Next i
End Sub

Przenoszenie domyślnych katalogów w SQL Server (!!!nie testowane !!!)

Originale TUTAJ Moze  się kiedyś przyda!!!

Instalacja SQL Server do domyślnych katalogach mogą być trudne do maintan przede wszystkim dlatego, Microsoft zmienia domyślną ścieżkę do katalogu danych w każdej wersji głównej. Na przykład domyślne ścieżki do plików bazy danych dla instancji domyślnej w SQL 2005-2008 R2 są:

SQL 2005 -% Program Files% \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ Data
SQL 2008 -% Program Files% \ Microsoft SQL Server \ MSSQL10.MSSQLSERVER \ MSSQL \ Data
SQL 2008 R2 -% Program Files% \ DATA Microsoft SQL Server \ MSSQL10_50.MSSQLSERVER \ MSSQL \

Wykonywanie przywracania bazy danych z jednego serwera na inny z różnymi wersjami może dodać złożoności z poleceniem restore ponieważ ścieżka docelowa nie jest spójna. Również po aktualizacji w miejscu SQL Server pliki bazy danych nie zostały przeniesione z poprzedniej domyślnej ścieżce do nowego więc serwer może mieć MDF i LDF pliki w katalogu z łudząco nazwie ścieżki.

Korzystanie z katalogu Standardowy
Mam standaryzowane moje instalacje użyć tej samej ścieżki dla wszystkich lokalizacjach MDF i LDF plików. Upraszcza to odbudowała skryptów i zmniejsza złożoność podczas migracji, ponieważ wszystkie pliki danych na wszystkich serwerach są w tej samej ścieżce. I zawsze moje pliki dziennika na osobnym dysku z plików danych są więc w tych samych ścieżek na różnych dyskach, na przykład:

Logs – y:\mssql\%instanceName%\data
Data – z:\mssql\%instanceName%\data

 

Po zainstalowaniu i wszystkich plikach mdf i ldf znajdują się w nowych, ulepszonych lokalizacjach standardowych, znalazłem trzy dodatkowe katalogi, które chciałem ujednolicić i przejść do domyślnej ścieżki:

database engine default backup directory
%SQL Install Directory%\MSSQL10_50.MSSQLSERVER\MSSQL\BACKUP
sql agent working directory
%SQL Install Directory%\MSSQL10_50.MSSQLSERVER\MSSQL\JOBS
sql agent log directory
%SQL Install Directory%\MSSQL10_50.MSSQLSERVER\MSSQL\LOG

Konfiguracja nie jest dostępna za pośrednictwem interfejsu GUI SSMS lub podczas instalacji. Jedynym sposobem ich zmiany są bezpośrednio w rejestrze lub za pomocą skryptu t-sql, który zmienia rejestr.
Oto skrypt, który zmieni je na dowolną ścieżkę wybranej ścieżki i ma świadomość, że poprawny klucz rejestru jest aktualizowany dla dowolnej instancji. Uwaga – ten skrypt używa procedury rozszerzonej xp_instance _regwrite,

w przyszłości może nie działać .

 

USE [msdb]
GO
 
-- change the @instancename to whatever named instance this is for, the rest will sort itself out ----------------------
DECLARE @instancename nvarchar(255) = N'mssqlserver' -- use 'mssqlserver' for the default instance
 
DECLARE @mssqlpath nvarchar(255) = N'z:\mssql\' + @instancename
DECLARE @dbengine_defaultbackup_path nvarchar(255) = @mssqlpath + N'\backup'
DECLARE @sqlagent_errorlogfile nvarchar(255) = @mssqlpath + N'\log\SQLAGENT.OUT'
DECLARE @sqlagent_workingdirectory_path nvarchar(255) = @mssqlpath + N'\jobs'
 
--SELECT @dbengine_defaultbackup_path, @sqlagent_workingdirectory_path, @sqlagent_errorlogfile
 
-- update the database engine's default backup directory path ---------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite
 N'HKEY_LOCAL_MACHINE'
 , N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer'
 , N'BackupDirectory'
 , N'REG_SZ'
 , @dbengine_defaultbackup_path
 
-- update the SQL Agent working directory -----------------------------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite
 N'HKEY_LOCAL_MACHINE'
 , N'SOFTWARE\Microsoft\MSSQLServer\SQLServerAgent'
 , N'WorkingDirectory'
 , N'REG_SZ'
 , @sqlagent_workingdirectory_path
 
-- update the SQL Agent log file location -----------------------------------------------------------------------------
EXECUTE msdb.dbo.sp_set_sqlagent_properties @errorlog_file = @sqlagent_errorlogfile
 
-- update the setup's SQL Data Root path ------------------------------------------------------------------------------
EXECUTE [master].dbo.xp_instance_regwrite 
 N'HKEY_LOCAL_MACHINE'
 , N'SOFTWARE\Microsoft\MSSQLServer\Setup'
 , N'SQLDataRoot'
 , N'REG_SZ'
 , @mssqlpath

Zmodyfikuj skrypt, aby używać dowolnej ścieżki domyślnej. Usługi SQL Server i SQL Agent będą musiały zostać ponownie uruchomione, aby rozpocząć korzystanie z nowych lokalizacji plików. Gdy nowe lokalizacje są w użyciu, możesz usunąć stare katalogi.

Aktualizacja

Po próbie uaktualnienia jednego z moich serwerów do programu SQL Server 2012 stwierdziłem, że instalator miałby błąd podczas instalowania silnika bazy danych. Bałagan był:

“The Database Engine system data directory in the registry is not valid.”

Znalazłem klucz HKLM\software\microsoft\microsoft sql server\%instance_name%\setup\SQLDataRoot  .Odszukuje  ścieżkę dostępu do baz danych systemu. Ten klucz został utworzony podczas instalacji 2008 R2 i pliki zostały następnie przeniesione, więc to, co zostało utworzone w czasie instalacji, nie jest poprawne.

Jeśli zmodyfikujesz ten klucz na ścieżce skonfigurowanej w pliku @mssqlpath ze skryptu powyżej instalatora 2012, działa prawidłowo. Zmieniłem również skrypt, ostatnia sekcja wprowadza odpowiednią zmianę w celu uniknięcia tego wyjątku w przyszłości.

PDF oryginału

 

Zmiana plików tempdb na inny dysk

Pytanie – „Co zrobisz, gdy plik dziennika tempdb jest pełny , lub jest potrzeba przenieść go na szybszy dysk?”

Odpowiedź – najlepsze rozwiązanie, gdy plik dziennika tempdb jest pełny jest, aby przenieść je do nowego napędu.

Przeniesienie  tempdb  z jednego dysku na inny dysk.

Istnieją poważne dwa powody tempdb musi przenieść się z jednego dysku na inny dysk.
1) tempdb może chcieć   więcej miejsca niż mamy dostępne na dysku .
2) Przeniesienie tempdb do innej grupy plików, który znajduje się na innym dysku fizycznym przyczynia się do poprawy odczytu dysku bazy danych, ponieważ mogą one być odczytywane jednocześnie.

Śledzić kierunek poniżej dokładnie przenieść bazę danych i logowania z jednego dysku (C 🙂 na inny dysk (d 🙂 i (E :).

Otwórz Query  i połączyć się z serwerem. Uruchom ten skrypt, aby uzyskać nazwy plików wykorzystywanych do tempdb.

USE TempDB

GO

EXEC sp_helpfile

GO

sql temdb

Nazwy plików są zwykle tempdev i templog domyślnie.
Nazwy te zostaną wykorzystane w kolejnym komunikacie.
Uruchom poniższy kod, aby przenieść MDF i LDF pliki.
USE MASTER
GO
ALTERDATABASETempDB MODIFYFILE
(NAME= tempdev, FILENAME = 'd:\datatempdb.mdf')
GO
ALTERDATABASETempDB MODIFYFILE
(NAME= templog, FILENAME = 'e:\datatemplog.ldf')
GO
Definicja tempdb jest zmieniany.
 Jednakże, żadne zmiany nie są dostępne aż do ponownego   uruchomieniu SQL Server.

Proszę zatrzymać i ponownie uruchomić SQL Server i SQL będzie tworzyć pliki tempdb w nowych lokalizacjach.

Logitech Mysz nowy inny odbiornik

Jeżeli pojawia się problem z myszą ( myszką ) i nowym odbiornikiem lub jest problem z połączeniem .
Może to się przyda
Przywraca połączenie między urządzeniami a odbiornikami bezprzewodowymi innymi niż Unifying
  • Wersja oprogramowania: 2.20.28
  • Data wysłania: May 11, 2016
  • System operacyjny: Windows 8, Windows 7, Windows 10
  • Rozmiar pliku: 1.1 MB

To narzędzie przywraca połączenie między urządzeniami firmy Logitech a odbiornikami bezprzewodowymi innymi niż Unifying.

To narzędzie przywraca połączenie między urządzeniami firmy Logitech a odbiornikami bezprzewodowymi innymi niż Unifying.

  • Dodano obsługę myszy G900 Chaos Spectrum Professional-Grade Wired/Wireless Gaming Mouse

 


Aby ponownie połączyć mysz z odbiornikiem:

  • Odłącz połączenie przewodowe myszy.
  • Kliknij opcję Pobierz oprogramowanie i zapisz plik w wybranej lokalizacji.
  • Uruchom program Connection Utility.
  • Wykonaj instrukcje wyświetlane na ekranie, aby ponownie połączyć mysz.

Jeżeli mysz nie łączy się, wykonaj następujące czynności:

  • Sprawdź, czy mysz jest włączona.
  • Sprawdź poziom naładowania baterii i wymień je w razie potrzeby.
  • Spróbuj użyć innego portu USB dla odbiornika.
  • UWAGA: Nie używaj koncentratora USB ani przełącznika KVM. Zawsze podłączaj odbiornik bezpośrednio do komputera.
  • Ustaw mysz bliżej odbiornika.

Info z http://support.logitech.com/pl_pl/software/logitech-connection-utility-software

Odzyskanie relacji zaufania PC Serwer Windows

Odzyskanie relacji zaufania PC – domena MS

Długo niewłączany PC (np. 60 dni) traci połączenie z domeną – nie można się zalogować przy użyciu konta domenowego. Można naprawić to logując się na konto lokalnego admina, odłączyć PC od domeny i ponownie podpiąć.

Właściwe pytanie brzmi: czy można to zrobić szybciej, łatwiej, efektywniej np. z linii komend?

Można tak
Jasne, że można, np. tak:

dsmod computer “ComputerDN” -reset

ale potrzebny rejoin i restart

lub

netdom reset MachineName /domain DomainName /UserO UserName /PasswordO {Password | *}

tutaj zmiana wykonuje się na DC i CL, więc nie wymagany rejoin ani reboot

lub tak:

nltest /server:servername /sc_reset:domain\domaincontroller

lub jeszcze tak, na samym kliencie z PowerShell:

Test-ComputerSecureChannel -Repair

 

WordPress Themes