Wypowiedzi
-
Witam serdecznie Jestem nowy na tym forum przyciągnęło mnie tu makro napisane przez Pana Tomasza Gawęda, chciał bym zapytać autora bądź też innych forumowiczów jak zmodyfikować to podstawowe makro:
Option Explicit
Sub dzialaj()
Dim ark As Worksheet, temp As Worksheet
Dim i As Integer
Set ark = Sheets("Arkusz1")
For i = 1 To ark.Range("d65536").End(xlUp).Row
If Not czyistnieje(ark.Cells(i, 4)) Then
Sheets.Add
Set temp = ActiveSheet
temp.Name = ark.Cells(i, 4)
temp.Move After:=Sheets(Sheets.Count)
Call esql(ark.Cells(i, 4), temp.Name)
End If
Next i
End Sub
Function esql(argument As String, arkusz As String)
Dim cn As Object, rs As Object
Dim nazwa As String, sqlstr As String
Dim ark As Worksheet
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
nazwa = ActiveWorkbook.Path & Application.PathSeparator & ActiveWorkbook.Name
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & nazwa & ";" & _
"Extended Properties=""Excel 8.0;HDR=No"""
sqlstr = "SELECT * FROM [Arkusz1$] WHERE F4 = '" & argument & "'"
Set rs = cn.Execute(sqlstr)
Set ark = ActiveWorkbook.Sheets(arkusz)
ark.Cells.ClearContents
ark.Range("a1").CopyFromRecordset rs
rs.Close
cn.Close
End Function
Function czyistnieje(nazwa As String) As Boolean
Dim ark As Worksheet
czyistnieje = False
For Each ark In ThisWorkbook.Worksheets
If ark.Name = nazwa Then czyistnieje = True
Next ark
End Function
tak aby po utworzeniu arkuszy na podstawie kolumny D po ponownym uruchomieniu dopisywało do nich nowe rekordy, które pojawiły się w arkuszu1. Na chwile obecną za każdym razem muszę usunąć powstałe arkusze i uruchomić makro ponownie. Drugie pytanie czy jest możliwość w jakiś sposób ograniczyć ilość kolumn kopiowanych, bądź wskazać które kolumny z danego wiersza mają być skopiowane ?? Jeśli ktoś był by w stanie mi pomóc będę bardzo wdzięczny. Dopiero zaczynam zabawę z VBA, więc prosił bym o ewentualne tłumaczenie jak dla laika