Spoštovani!
Napisan imam makro, ki bi naj kopiral vsebino iz enega zvezka in ga prilepil na določeno mesto v določeni list drugega zvezka. Tu se mi pojavlja problem. ker bi moral dinamično določati v kateri list zvezka se naj vsebina kopira. Pri zapiranju zvezka iz katerega se kopira pa dobim sistemsko sporočilo, da je v odložišču ogromno podatkov tako, da moram vsakega posebej zapirati "potrjevati, da ne želim obdržati podatkov v odložišču".
Zanima me kako bi rešil te probleme.
Hvala za odgovor.
lp, Viktor Zrim
************** Koda ********************
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Sub Makro2()
Dim n As Integer, dummy As String, dum
Dim Podatki() As String, Datoteka As String
Dim Poz_Old As Integer, Pozicija As Integer
Datoteka = "Jože, Majda, Marija, Franc, Janez, ....."
ReDim Datoteka(37)
Poz_Old = 1
For n = 1 To 36
Pozicija = InStr(Poz_Old, Datoteka, ",")
Podatki(n) = Mid(Datoteka, Poz_Old, Pozicija - Poz_Old)
Poz_Old = Pozicija + 1
Next n
Podatki(37) = Mid(Datoteka, Poz_Old, Len(Datoteka) - Poz_Old + 1)
' V niz prepišem imena datotek.xls iz katerih se bodo brali podatki
dum = 1
For x = 1 To 37
For n = 1 To 12
dummy = Mesec(n) ' Mape v katerih so datoteke se imenujejo po mesecih določenega leta
Workbooks.Open "I:\RAZPORED\Razporedi\PRISOTNOST\Prisotnost 2011\" & dummy & " 2011\" & Podatki(x) & ".xls"
Range("B7:AJ25").Select ' Izberem področje za kopirati
Selection.Copy
Windows("Zvezek1.xls").Activate
' Aktiviram zvezek v katerega se bodo kopirali podatki. S tem združim na enem listu podatke za eno osebo iz celega leta
' Na tem mestu bi moral še izbrati v kateri list se bodo podatki kopirali, ker je zvezek zbirni in vsebuje toliko listov kot je oseb v nizu
Range("A" & dum).Select
dum = dum + 20
ActiveSheet.Paste
'EmptyClipboard 'To mi ne funkcionira. Ne morem sprazniti odložišča tako, da se mi pred zapiranjem pojavi sistemsko sporočilo
'CloseClipboard ' ko sporočilo prekličem se datoteka normalno zapre.
Windows(Podatki(x) & ".xls").Activate
ActiveWorkbook.Close SaveChanges:=False
Next n
Next x
End Sub
Function Mesec(kateri As Integer) As String
Select Case kateri
Case 1: Mesec = "Januar"
Case 2: Mesec = "Februar"
Case 3: Mesec = "Marec"
Case 4: Mesec = "April"
Case 5: Mesec = "Maj"
Case 6: Mesec = "Junij"
Case 7: Mesec = "Julij"
Case 8: Mesec = "Avgust"
Case 9: Mesec = "September"
Case 10: Mesec = "Oktober"
Case 11: Mesec = "November"
Case 12: Mesec = "December"
End Select
End Function
Kopiranje med zvezki
Re: Kopiranje med zvezki
Pozdravljeni,
Ob prvem vprašanju vam konkretneje ne morem pomagati, ker ne vem kako i vi dinamično določali list na katerega želite podatke prekopirati.
Kar pa se tiče drugega vprašanja, pa je rešitev preprosto v tem, da Excelu zaukažete, naj vam obvestil ne prikazuje. Torej pred zapiranjem zvezka zaukažete, naj se sporočila ne prikazujejo, nakar jih vklopite nazaj:
Seveda pa bi bilo mnogo boljše in hitrejše, če odlagališča sploh nebi uporabljali
...
Ob prvem vprašanju vam konkretneje ne morem pomagati, ker ne vem kako i vi dinamično določali list na katerega želite podatke prekopirati.
Kar pa se tiče drugega vprašanja, pa je rešitev preprosto v tem, da Excelu zaukažete, naj vam obvestil ne prikazuje. Torej pred zapiranjem zvezka zaukažete, naj se sporočila ne prikazujejo, nakar jih vklopite nazaj:
Koda: Izberi vse
....
Application.DisplayAlerts = false
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = true
....
lp,
Matjaž Prtenjak
Administrator
Matjaž Prtenjak
Administrator