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

 

Mikrotik-Bandwidth-Test-Server(s) Public

Dzięki planetcoop, teraz mamy dwa serwery publiczne BTEST MikroTik możemy przetestować, łącze

oba serwery działają BTEST MikroTik Chr.

oba są na połączeniach internetowych 10-Gig. To jednak nie oznacza, jesteś w stanie przetestować pełną 10-gig.

oto informacje:
 

planetcoop btest server:
Host: btest.planetcoop.com
ipv4: 50.235.23.218
ipv6: 2001:559:8062::20
user and pass: btest
traffic graph of this btest server: https://btest.planetcoop.com:10443/graphs/iface/ether1/

 

TomjNorthIdaho btest server:
ipv4: 207.32.195.2
user and pass: btest
traffic graph of this btest server: http://207.32.195.2/graphs/iface/ether1/

WordPress Themes