Da jeg er forholdsvis ny i programmering i VBA, står jeg med et lille problem, som jeg har svært ved at se hvordan skal løses.
Jeg skal have en vba macro til at importere (kopiere...) noget data fra et sheet der er lukket, til en anden workbook(den åbne og aktuelle) fil navn og mapper ændre sig fra dag til dag. så der skal altså også tages hensyn til dette. desuden skal der køres et tjek sammen med som jeg havde forestillet mig tager udgangspunkt i tidspunktet for indskrivelsen (dette har jeg i en af cellerne der skal kopieres, ned til sekunder) samt en anden celle der er fast fra hver indskrivelse, så man altså ikke kan "komme til" at importere det samme flere gange og derved ikke overskrive det.
Håber at der er nogle af jer excel hajer der gider at bruge et par minutter på at hjælpe en ikke særlig stor excel haj:)
Jeg er lidt i tvivl om hvad du mener med at styre "fra - til" med omkring indskrivelse. Nedenfor et eksempel på hvordan du kan importere data fra en workbook.
Jeg håber det kan bruges.
Option Explicit Sub Main()
Dim FolderPath As String ' Path to source folder - Optional variable Dim sourceFileName As String ' Filename of source file - Optional variable Dim sourcePath As String ' Complete path to source file Dim sourceWB As Workbook ' Workbool to import from Dim sourceWS As Worksheet ' Sheet in source workbook Dim sourceWSName As String ' Name of sheet on import workbook Dim sourceCopyFromRow As Long ' Row on sourcesheet to copy from Dim sourceCopyToRow As Long ' Row on sourcesheet to copy to
Dim destinationWS As Worksheet ' Destionation sheet in "this workbook" Dim destinationWSName As String ' Name of destination sheet - Optional variable Dim DestinationRow As Long ' Row on destination sheet to insert data to
' Source definations and initializations sourceCopyFromRow = 1 ' Copy from row 1 sourceWSName = "SourceSheet" ' Name of import sheet FolderPath = ThisWorkbook.Path ' Path to this workbook (assumed that source and destination are in same filestructure) sourceFileName = "SourceSheet.xlsx" ' Name of file to import data from sourcePath = FolderPath & "\" & sourceFileName ' Path to sourcefile 'MsgBox ("Import fil: " & sourcePath) ' TBD - just for information
Set sourceWB = Workbooks.Open(sourcePath) ' Open sourceWB Set sourceWS = sourceWB.Sheets(sourceWSName) ' Sets source sheet, by refering to sheet name 'Set sourceWS = sourceWB.Sheets(1) ' Sets source sheet, by refering to sheet number 'MsgBox ("Import from workbook: " & sourceWB.Name) ' TBD - just for information
' Destination definations and initializations destinationWSName = "Destination" ' Name of destination sheet Set destinationWS = ThisWorkbook.Sheets(destinationWSName) ' Sets destination sheet, by refering to sheet name 'Set destinationWS = ThisWorkbook.Sheets(1) ' Sets destination sheet, by refering to sheet number 'MsgBox ("Destination sheet: " & destinationWS.Name) ' TBD - just for information
' Copy data from sourceWS to destinationWS
sourceCopyToRow = LastRow(sourceWS) ' Get last row with data on source sheet DestinationRow = LastRow(destinationWS) + 1 ' Get last row with data on destination sheet sourceWS.Rows(sourceCopyFromRow & ":" & sourceCopyToRow).Copy destinationWS.Range("A" & DestinationRow) destinationWS.Range("F" & DestinationRow) = "Inserted at: " destinationWS.Range("G" & DestinationRow) = Now()
sourceWB.Close ' Close sourceworkbook
End Sub
' Purpose: Returns last row on sheet ' Parameters: Sheet Public Function LastRow(WS As Worksheet) As Long LastRow = WS.UsedRange.Rows.Count End Function
Hej Jeg vil lige høre om mit forslag bragte dig videre mod en løsning?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.