Macro possibilities?

Thanks for reading this.
I really like taking photos of things like insects and little lizards. I found a really cool praying mantis yesterday in the garden and took a few shots of it. I used my 70-200 with the 1.4 tc which was pretty good, but obviously I couldn't get very close 'cause of focus depth limitations. I am considering getting the canon extension tubes: EF 12 II and EF 25 II. Is this a good way to go? Are these something that you'd use as well as a tc on a 70-200? Or is that the wrong kind of lens for this kind of work? I've also had an initial investigation of circular macro flash rings. But I'm assuming they wouldn't work with my 70-200 cause of the large diameter of the front element. There seems to be so many options for macro set ups. What kind if setup should I be aiming for to do fairly decent macro shots? I've been a big fan of Igor Siwanowicz' work for a very long time.
Cheers,
Cg.
Canon 6D,Canon EF 24-105mm f/4 L IS USM, Sigma 70-200mm f/2.8 EX DG OS HSM, Sigma 1.4 x EX DG Teleconverter, Canon EF 100mm f/2.8 macro USM, Canon EF 50mm f/1.8, EF 40mm f/2.8 pancake, Sigma AF 8-16mm f/4.5-5.6 DC HSM, Pentax 400mm f/5.6
Solved!
Go to Solution.

Hi,
As ebiggs says, there are many ways to achieve macro shots.
Personally I use a number of extension tubes (a Kenko set of three - 36, 20 & 12mm - plus one Canon 25mm and two Canon 12mm). These are always handy to have and I wouldn't be without a few in my camera bag, all the time. They are inexpensive and can allow you to get that macro or close-up shot when you don't happen to have a macro lens with you, or can be used to increase the magnification capabilities of a true macro lens beyond it's 1:1 (typically) potential, or just used to get closer minimum focus distance with a telephoto.
For example, this was shot with EF 70-200/2.8 IS, Canon 25mm extension tube, and 550EX flash (fill)...
I was out shooting birds and didn't have a macro lens with me.
For the below image, to frame the tiny bush *i* (replace the astericks with "t"... the cyber censors won't allow me to use this bird's actual name) as tightly as I wanted, I needed to add a 36mm extension tube to an EF 500/4 IS lens, to enable that lens to focus closer...
While they aren't necessarily designed for macro or near macro work, teleconverters (Canon calls them Extenders) change the effective focal length of a lens, but leave it's closest focus distance uneffected.... so will increase potential for magnification. In order to get the below shot of a tiny fence lizard, I had to use both - Canon EF 1.4X II and a 25mm extension tube - on 300/2.8 IS lens...
The longer the focal length of your lens, the less effect any particular amount of extension will give. A 25mm extension tube only slightly changes the magnification and closest focusing distance of a 300mm lens.... But the same amount of extension on a 50mm lens would have dramatic effect.  Following image was shot with 12mm extension on EF 50/1.4 lens...
Even more extreme, the following was shot with 12mm extension on an EF 20/2.8 lens (I wanted extra depth of field to retain more background detail)....
When shooting the above, the flower petals were actually touching the front element of the lens! Can't get much closer than that!
All the above macro or near macro shots were done using "non-macro" lenses that were made to focus closer than normally possible, using extension tubes. Those can work well, but there are some advantages to true macro lenses, too. Personally I use four in my Canon kit: Tamron SP AF 60mm f2.0, Canon MP-E 65mm f2.8, Canon 100/2.8 USM (not the L/IS), and Canon 180/3.5L. I also use a Canon TS-E 45/2.8 for close-up work, and occasionally a vintage, adapted Tamron SP 90/2.5 1:2  macro lens.
When you force non-macro lenses to focus closer than intended, there can be side-effects. For example, the shot of the rose bud above has fairly strong vignetting and softer edges. This is characterisic of the EF 50/1.4 lens when it's made to focus very close and a larger aperture is used.... It's not necessarily a bad thing. I used the lens with extension deliberately for that shot, because I wanted both the vignetting and softening effects.
One thing you don't need to worry about with "true" macro lenses is image quality. In general, they are all very capable of making great images. It's more down to the other features of macro lenses that set them apart from each other.
Focal length is probably the main consideration. Too short a macro lens can put you awfully close to your subjects, which might scare living critters away, or cause you to cast an unwanted shadow on the subject, or even get you bit or stung! . A longer focal length gives you more working space, but too long a lens is difficult to get a steady shot and renders extremely very shallow depth of field.
If I could only have one, I'd choose my Canon EF 100/2.8 USM macro lens. It's the best all around for my purposes, on both crop cameras (like yours, though I use 7Ds) and full frame (5D MkII). 90 to 105mm gives reasonable working distance, yet is pretty easily handheld for quick shots. DOF is still shallow, but pretty manageable without having to resort to ridiculously small apertures where lighting is a problem and optical diffraction robs fine detal from images.
Here's an example shot with my 180/3.5L, that demonstrates how razor thin depth of field can get with such a long focal length....
Even though that's a fairly large bee, the plane of sharp focus is only a few mm deep. This was shot near 1:1 on full frame (with a film camera, actually). The lens and camera were resting on the ground to help keep them steady. Something closer to 100mm is much more easily handheld, not too big and renders a little more depth of field.
There are other features of the Canon EF 100/2.8 USM that make it a great macro lens, IMO.
It's "internal focusing" (IF), which means it doesn't grow in length when you focus it closer, so doesn't cut into your working distance (note: the 100L, Tamron 60/2  and 180/3.5L also are IF lenses). There's no such thing as a free lunch, though, with optics. In order for the 100/2.8 to be IF, it starts out larger than some other lenses of similar focal length. And, the focal length actually changes a bit as it's focused closer. I have heard that at max 1:1 magnification it's closer to 70mm lens.... but this isn't particularly noticeable in the field working with the lens.
100/2.8 USM macro lens on crop sensor camera, with 550EX flash, handheld...
The 100/2.8 version I use has got USM focus drive, which gives it reasonably quick auto focusing for a macro lens. Macro lenses tend to be slower focusing for a couple reasons. One is that they have to move their focusing elements a long, long way to go all the way from infinity to 1:1 magnification. Another is that most emphazise precision over speed, so use what's called a "long throw" focus mechanism. In the old days of manual focus, you would have to turn the focusing ring a lot farther with a long throw lens. Short throw lenses were built for speed and might be used for sports photography. The 100mm's USM drive (which the EF-S 60/2.8, 100L and 180/3.5L also have) makes it more of a dual purpose lens, more usable for non-macro purposes. In spite of having USM, the 180/3.5L is noticeably slower focusing and not as useful for non-macro work.
I make the distinction between macro and non-macro focusing because often macro shooting is more easily focused manually. I use AF sometimes, but just as often or more often use manual focusing of one method or another.  But if you want to use the lens as a non-macro, moderate telephoto too, it can be nice if it's reasonably fast focusing. Another benefit of USM is that you don't have to turn off AF before overriding it manually. (Note: there was an earlier version of EF 100/2.8, discontinued years ago, that doesn't have USM).
To me, one of the most important features of the Canon 100mm macro lenses is that they can optionally be fitted with a tripod mounting ring. The 100/2.8 USM uses Tripod Ring B (b) and the 100L uses Tripod Ring D. I'm not aware of any other macro lenses shorter than 150mm that an be fitted with a tripod ring, and to me that's a very important feature. A lot of macro photography is done from a tripod or monopod. Which is one reason I don't really feel the need to upgrade to  the newer, IS version... plus it costs a lot more. Besides, stabilization is of limited effectiveness when shooting macro.... though it might be very nice when using the lens for non-macro purposes (except that I have several other lenses, so don't rely on the macro for dual purpose that much). The 180/3.5L and most other 150mm and longer macro lenses come with a tripod ring.
Speaking of stabilization, the Canon 100L uses a hybrid form developed especially for macro, which by all accounts is one of the most effective. Even so, at 1:1 mag it might only be good for one or two stops of assistance. For non-macro shots, the IS might give three or four stops assistance.
I got the Tamron SP 60/2.0 recently because it's quite small and light, easy to pack in my camera bag when I don't know if I'll be taking any macro shots or not, have other gear to haul around. The same is true of the Canon EF-S 60/2.8 USM, it's equally compact. I opted for the Tamron for it's f2 aperture,  mostly in order to use the lens for portraiture, as well. Both the Canon and the Tamron 60mm lenses are "crop only" (all the other macros mentioned are FF capable).  I don't have images uploaded online from it yet, but  have found quality to be quite good. It is a little slow focusing.... no problem for macro or portraits, but not a lens I'd use for sports and action shooting. I imagine the Canon with its USM is faster focusing.
I used to use the vintage (25-30 year old) Tamron 90mm as my "compact" macro (shown on one of my 7Ds, above).... and it served well for that purpose but was less useful for portraiture. Still, for a lens that cost me all of $60 US. That was $20 for the lens - like new with hood, 1:1 adapter, caps and a Nikon Adaptall mount - plus $40 for an Adaptall-EOS mount from China.  It's slower to work with. Manual focus, as well as manual aperture control, but does a pretty good job (here with 36mm extension tube to increase magnification)...
 The other lenses I mentioned using are more specialized. The Canon MP-E 65mm macro is an ultra-high magnification, manual focus lens. The least magnification it can give is 1:1, where most other macro lenses are at their maximum (unless you add extension tubes to them). It goes up to 5:1 or 5X life size, so essentially can fill the frame on one of my 7Ds with a grain of rice.  Below image made with the MP-E 65mm is of a tiny, newly hatched snail that was smaller than the nail on my pinky finger, at about 2X magnification...
I gotta say, I wouldn't recommend the MP-E 65mm as a first macro lens. It's mostly going to be a tripod-only lens. Depth of field is incredibly shallow. Due to the extension of the lens, it's smallest f16 aperture becomes something like an effective f96 at the highest magnification. I'm going to have to work on focusing stacking techniques with this lens (and will need something a lot slower moving than a snail, to shoot those!).
I use the TS-E 45mm "Tilt Shift" lens primarily for small product close-ups.... Tabletop studio shoots, such as this which was one of hundreds done for a client's website...
Magnification with the 45mm alone is not really macro territory, but it allows unique control over the plane of focus with the tilt movements, as well as means of dodging reflections with the shift movements. It's manual focus lens, too. For higher magnfication work, the TS-E 90mm might be a better choice, and either lenses' magnification can be increased using extension tubes.
As to flash, there are choices with those, too. There are specialized macro flashes, or ways to use standard flashes for macro shots.
I used a Canon MR-14EX Ringlite for the snail shot, above. I mostly only use a ring light with really high magnificatioin shots.... at lower mags the light just seems to flat and "clinical" for me. As far as I know, the MR-14EX is pretty much dedicated to Canon lenses, since it clips directly onto the lens, latching in a groove only found on the Canon lenses.
MR-14EX on MP-E 65mm lens, on 7D...
More often, especially for 1:1 and lower magnification shots, I either use Canon MT-24EX Twin Lite or a single,  standard flash with some minor modifications. The Twin Lite is great, but a rather large kit and not widely useful for non macro purposes. It also is designed to clip onto the front of Canon lenses, but is more flexible in that it can be used with a more generic dual flash bracket, too.
LH image: MT-24EX normally mounted. Center: Lepp/Stroboframe dual flash bracket. RH image: MT-24EX on Lepp bracket.
But you don't have to use a dedicated macro flash either. Often I'll simply use a single, standard flash, on an off-camera shoe cord so that I can hold it off to the side of and/or above the subject...
Note that I've put a couple layers of white qauze bandage over the flash head, held in place with a rubber band. This reduces and diffuses the flash output so that it can be used close to a small subject. A single flash works surprisingly well, because relative to a small subject it's like a giant softbox in the sky. This mantis was shot using something similar to the above setup (and EF 100/2.8 USM macro lens)...
 Have fun shopping!
Macro is a lot of fun... and a lot easier today than it was back in the good/bad old days of film! One of my old rigs...
Alan Myers
San Jose, Calif., USA
"Walk softly and carry a big lens."
GEAR: 5DII, 7D(x2), 50D(x3), some other cameras, various lenses & accessories
FLICKR & PRINTROOM 

Similar Messages

  • Setting up SNP with ECC at a macro level

    Hello experts
    What are the different scenarios that can be set up with SNP - ECC - SNP with respect to Distribution planning ?
    Meaning stock transfers , assuming PPDS will be active and will only be used for creating PPDS planned orders.
    We have 10 plants and 34 DC's and regional DC's.
    Thank you.
    Regards
    KK

    HI KK
    This is more an architecture question that has to be addressed at macro level.
    Assuming your demand is coming from DP or somewhere outside, a SNP run either SNP Heuristics or CTM or optimizer could be setup to move that demand from DCs to Plants. Then you run the planing runs at each plant in PPDS producing planned orders in short term and SNP run for medium to long term. If you have external procurement, the system creates purchase reqs.
    If your plants are sourcing your DCs and then to regional DCs, you may want to run this in 3 stages, first SNP from regional DC to DC, then DC to plant and finally at Plant.
    At one of our projects, we separated the SNP runs into Heuristic( where these is no capacity issue) and some into CTM ( where there are more constraints).
    Based on the scenario, you may choose to integrate these planed orders, purchase reqs. from SNP/PPDS to ECC and execute there.
    You may also run a deployment run from the plants to DCs and not integrate these deployment reqs. with ECC ( as you would not execute them yet), then finally convert these deployment reqs. into STOs/POs and then push these to ECC for execution.
    There are infact so many possibilities based your business need. You may take above as a frame work. Hope this helps.

  • APO DP Planning book cell entry or exit - macro way to validate business rules

    Dear All,
    We have requirement from business that Demand planner will key in forecast in respective KF, when comes out of one cell and go to another cell to enter forecast, we have to validate the cell value with 3 months average and if it is deviated certain percent we need to highlight with different color.
    Note: Planner do not want to enter/save in between moving between planning book cells.
    For example: 3 months average is 100. Planner wants to enter forecast in cells continuously for next 12 months without hitting Enter key or save. I want to compare the cell value with average and if its deviated beyond certain level we need to highlight the cell with different color.
    I know that we have macro events will work when we hit enter key or save or exit or level change.
    I am not sure this is possible, wanted to know any other way possible.
    Thanks in advance.
    Please share your thoughts.
    Sreeni

    This will be quite difficult to achieve because the planning books are designed so that macros execute after you press enter.  There are 3 possibilities that I see
    1 - If you allowed the planner to make all their inputs into the required key figure and then press enter, you could easily design a macro to read each cell in the input key figure and compare it to the 3 months average of another key figure then highlight the input cell accordingly using the CELL_BG() functionality as described above.  
    2 - Alternately you could create a dynamic alert on the input key figure using much the same logic but again these will not generate until enter is pressed.
    3 - Another option is to create a macro that asks the user to enter data into a pop-up box which is read into a layout variable.  This macro could be triggered from a push button.  You could then do the comparison between the value in the layout variable and the 3 months moving average for that particular time bucket and present an error message if it is outside the tolerances that you set.  Such a macro could run for all time buckets or for a range of time buckets that the user highlights.  Your user will still have to press enter however.  The use of some of the macro operators is below:
    Overall I think you have to go with option 1 or 2 and generate the alerts at the end of user input
    Hope this helps
    Laurence

  • Macro to open and save as a value in a cell

    How can I create a macro (I've named it Test) that will:
    1.bring up the open dialogue box (to allow the user to choose a file)
    2.save the file, with the file name determined by the text in cell A3 in .xlsx format
    I have two pieces code that seem to work individually, but not together:
    Dim strFileName As String
    strFileName = Application.GetOpenFilename
    If strFileName = "False" Then Exit Sub
    MsgBox strFileName
    ThisFile = Range("A3").Value
     ActiveWorkbook.SaveAs Filename:=ThisFile
    Thanks for the help!

    Hi
    With very little change, this works for me. I just declared your last variable. (thisFile)
    Sub test()
        Dim strFileName As String, thisFile As String
        strFileName = Application.GetOpenFilename
        If strFileName = "False" Then Exit Sub
        MsgBox strFileName
        thisFile = Range("A3").Value
        ActiveWorkbook.SaveAs Filename:=thisFile
    End Sub
    Cimjet

  • Memory usage of excel stays high after Macro is executed and excel crashes after trying to close it

    Hi,
    I'm trying to resolve an issue with an excel based tool. The macros retrieve data from an Oracle database and do calculations with the data. They also open and write into files in the same directory. The macros all run and finish the calculations. I can
    continue to use and modify the sheet. I can also close the workbook, however excel memory usage I see in the windows Task manager stays elevated.If I  close Excel it says: Excel stopped working and then it tries to recover information...
    I assume something in the macro did not finish properly and memory was not released. I would like to check what is still open (connection, stream or any other object) when I close the workbook I would like to have a list of all still used memory. Is there
    a possibility to do so.
    Here the code I'm using, its reduced to functions which open something. Functions   
    get_v_tools() and get_change_tools() are same as get_client_positions().
    Public conODBC As New ADODB.Connection
    Public myPath As String
    Sub get_positions()
    Dim Src As range, dst As range
    Dim lastRow As Integer
    Dim myPath As String
    lastRow = Sheets("SQL_DATA").Cells(Sheets("SQL_DATA").rows.Count, "A").End(xlUp).Row
    Sheets("SQL_DATA").range("A2:AD" & lastRow + 1).ClearContents
    Sheets("SQL_DATA").range("AG2:BE" & lastRow + 2).ClearContents
    Sheets("SQL_DATA").range("AE3:AF" & lastRow + 2).ClearContents
    k = Sheets("ToolsList").Cells(Sheets("ToolsList").rows.Count, "A").End(xlUp).Row + 1
    Sheets("ToolsList").range("A2:M" & k).ClearContents
    'open connection
    Call open_connection
    lastRow = Sheets("SQL_DATA").Cells(Sheets("SQL_DATA").rows.Count, "A").End(xlUp).Row
    If lastRow < 2 Then GoTo ErrorHandling
    'copy bs price check multiplications
    Set Src = Sheets("SQL_DATA").range("AE2:AF2")
    Set dst = Worksheets("SQL_DATA").range("AE2").Resize(lastRow - 1, Src.columns.Count)
    dst.Formula = Src.Formula
    On Error GoTo ErrorHandling
    'new prices are calculated
    newPrice_calculate (lastRow)
    Calculate
    myPath = ThisWorkbook.Path
    'Refresh pivot table in Position Manager
    Sheets("Position Manager").PivotTables("PivotTable3").ChangePivotCache ActiveWorkbook. _
    PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
    myPath & "\[Position_Manager_v1.0.xlsm]SQL_DATA!R1C2:R" & lastRow & "C31" _
    , Version:=xlPivotTableVersion14)
    ErrorHandling:
    Set Src = Nothing
    Set dst = Nothing
    If conODBC.State <> 0 Then
    conODBC.Close
    End If
    End Sub
    Sub open_connection()
    Dim sql_data, sql_data_change, sql_data_v As Variant
    Dim wdth, TotalColumns, startRow As Integer
    Dim rst As New ADODB.Recordset
    Errorcode = 0
    On Error GoTo ErrorHandling
    Errorcode = 1
    With conODBC
    .Provider = "OraOLEDB.Oracle.1"
    .ConnectionString = "Password=" & pswrd & "; Persist Security Info=True;User ID= " & UserName & "; Data Source=" & DataSource
    .CursorLocation = adUseClient
    .Open
    .CommandTimeout = 300
    End With
    startRow = Sheets("SQL_DATA").Cells(Sheets("SQL_DATA").rows.Count, "A").End(xlUp).Row + 1
    sql_data = get_client_positions(conODBC, rst)
    wdth = UBound(sql_data, 1)
    Sheets("SQL_DATA").range("A" & startRow & ":AA" & wdth + startRow - 1).Value = sql_data
    'Run change tools instruments
    startRow = Sheets("ToolsList").Cells(Sheets("ToolsList").rows.Count, "A").End(xlUp).Row + 1
    sql_data_change = get_change_tools(conODBC, rst)
    wdth = UBound(sql_data_change, 1)
    Sheets("ToolsList").range("A" & startRow & ":M" & wdth + startRow - 1).Value _
    = sql_data_change
    'open SQL for V tools instruments
    startRow = Sheets("ToolsList").Cells(Sheets("ToolsList").rows.Count, "A").End(xlUp).Row + 1
    sql_data_v = get_v_tools(conODBC, rst)
    wdth = UBound(sql_data_v, 1)
    Sheets("ToolsList").range("A" & startRow & ":L" & startRow + wdth - 1).Value = sql_data_v
    conODBC.Close
    ErrorHandling:
    If rst.State <> 0 Then
    rst.Close
    End If
    Set rst = Nothing
    End Sub
    Private Function get_client_positions(conODBC As ADODB.Connection, rst_posi As ADODB.Recordset) As Variant
    Dim sql_data As Variant
    Dim objCommand As ADODB.Command
    Dim sql As String
    Dim records, TotalColumns As Integer
    On Error GoTo ErrorHandling
    Set objCommand = New ADODB.Command
    sql = read_sql()
    With objCommand
    .ActiveConnection = conODBC 'connection for the commands
    .CommandType = adCmdText
    .CommandText = sql 'Sql statement from the function
    .Prepared = True
    .CommandTimeout = 600
    End With
    Set rst_posi = objCommand.Execute
    TotalColumns = rst_posi.Fields.Count
    records = rst_posi.RecordCount
    ReDim sql_data(1 To records, 1 To TotalColumns)
    If TotalColumns = 0 Or records = 0 Then GoTo ErrorHandling
    If TotalColumns <> 27 Then GoTo ErrorHandling
    If rst_posi.EOF Then GoTo ErrorHandling
    l = 1
    Do While Not rst_posi.EOF
    For i = 0 To TotalColumns - 1
    sql_data(l, i + 1) = rst_posi.Fields(i)
    Next i
    l = l + 1
    rst_posi.MoveNext
    Loop
    ErrorHandling:
    rst_posi.Close
    Set rst_posi = Nothing
    Set objCommand = Nothing
    get_client_positions = sql_data
    End Function
    Private Function read_sql() As String
    Dim sqlFile As String, sqlQuery, Line As String
    Dim query_dt As String, client As String, account As String
    Dim GRP_ID, GRP_SPLIT_ID As String
    Dim fso, stream As Object
    Set fso = CreateObject("Scripting.FileSystemObject")
    client = Worksheets("Cover").range("C9").Value
    query_dt = Sheets("Cover").range("C7").Value
    GRP_ID = Sheets("Cover").range("C3").Value
    GRP_SPLIT_ID = Sheets("Cover").range("C5").Value
    account = Sheets("Cover").range("C11").Value
    sqlFile = Sheets("Cover").range("C15").Value
    Open sqlFile For Input As #1
    Do Until EOF(1)
    Line Input #1, Line
    sqlQuery = sqlQuery & vbCrLf & Line
    Loop
    Close
    ' Replace placeholders in the SQL
    sqlQuery = Replace(sqlQuery, "myClent", client)
    sqlQuery = Replace(sqlQuery, "01/01/9999", query_dt)
    sqlQuery = Replace(sqlQuery, "54747743", GRP_ID)
    If GRP_SPLIT_ID <> "" Then
    sqlQuery = Replace(sqlQuery, "7754843", GRP_SPLIT_ID)
    Else
    sqlQuery = Replace(sqlQuery, "AND POS.GRP_SPLIT_ID = 7754843", "")
    End If
    If account = "ZZ" Then
    sqlQuery = Replace(sqlQuery, "AND AC.ACCNT_NAME = 'ZZ'", "")
    Else
    sqlQuery = Replace(sqlQuery, "ZZ", account)
    End If
    ' Create a TextStream to check SQL Query
    sql = sqlQuery
    myPath = ThisWorkbook.Path
    Set stream = fso.CreateTextFile(myPath & "\SQL\LastQuery.txt", True)
    stream.Write sql
    stream.Close
    Set fso = Nothing
    Set stream = Nothing
    read_sql = sqlQuery
    End Function

    Thanks Starain,
    that's what I did the last days and found that the problem is in the
    newPrice_calculate (lastRow)
    function. This function retrieves data (sets it as arrays) which was correctly pasted into the sheet, loops through all rows and does math/calendar calculations with cell values using an Add-In("Quantlib")
    Public errorMessage as String
    Sub newPrice_calculate(lastRow)
    Dim Type() As Variant
    Dim Id() As Variant
    Dim Price() As Variant
    Dim daysTo() As Variant
    Dim fx() As Variant
    Dim interest() As Variant
    Dim ObjCalend as Variant
    Dim newPrice as Variant
    On Error GoTo Catch
    interest = Sheets("SQL_DATA").range("V2:V" & lastRow).Value
    Type = Sheets("SQL_DATA").range("L2:L" & lastRow).Value Id = Sheets("SQL_DATA").range("M2:M" & lastRow).Value Price = Sheets("SQL_DATA").range("T2:T" & lastRow).Value
    daysTo = Sheets("SQL_DATA").range("K2:K" & lastRow).Value
    fx = Sheets("SQL_DATA").range("U2:U" & lastRow).Value
    qlError = 1
    For i = 2 To lastRow
    If (i, 1) = "LG" Then
    'set something - nothing spectacular like
    interest(i, 1) = 0
    daysTo(i , 1) = 0
    Else
    adjTime = Sqr(daysTo(i, 1) / 365)
    ObjCalend(i,1) =Application.Run("qlCalendarHolidaysList", _
    "CalObj", ... , .... other input parameters)
    If IsError(ObjCalend(i,1)) Then GoTo Catch
    'other calendar calcs
    newPrice(i,1) = Application.Run( 'quantLib calcs)
    End If
    Catch:
    Select Case qlError
    Case 1
    errorMessage = errorMessage & " QuantLibXL Cal Error at: " & i & " " & vbNewLine & Err.Description
    ObjCalend(i,1) (i, 1) = "N/A"
    End Select
    Next i
    Sheets("SQL_DATA").range("AB2:AB" & lastRow).Value = newPrice
    'Sheets("SQL_DATA").range("AA2:AA" & lastRow).Value = daysTo
    ' erase and set to nothing all arrays and objects
    Erase Type
    Erase id
    Erase Price
    Set newPrice = Nothing
    Is there a possibility to clean everything in:
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    End Sub
    Thanks in advance
    Mark

  • Help needed in Macro

    Hello Experts,
    I am creating a macro, where the requirement is; user would select few columns of a KF & hit on a macro.
    The values in the KF should get multiplied by 2.
    Any clue how should I add ( *2) functionality in operation / function ?. Any other suggestion is welcomed.
    Please help
    Regards
    Rahul Chitte

    Hi Rahul,
    You can set the macro to run for few period.
    1)  In the step of the macro, select the period you want to run
    2) Within the step, Results row (Key figure row 'XXX") = Key figure row 'XXX" * 2 (remember to maintain a space between * and 2)
    3) Check the macro for any error, which would help you for any inconsistencies
    4) activate the macro to test your requirement.
    hope this would solve your requirment.
    Regards,
    Nawanit

  • Word templates with Macros

    Dear all,
    I have a couple of Word templates (in document libraries) that should have the filename and page count on the footer of the front page. It seams there is an issue with Word that these do not automatically update (MS kb 832897).
    I am using word 2010, 64 bits.
    This is solved with a Macro.
    When placing the word with macro template in SharePoint, SP blocks it and the macros are not ran.
    Any one with experience on this?
    Thanks in advance.
    Gonçalo

    It is not possible to run a macro in SharePoint after the document has been uploaded. 
    You can replicate this scenario by creating a SPItemEventReceiver which will run customized code on ItemAdded in your document library. 
    Please go through the following articles for details:
    http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spitemeventreceiver.aspx
    http://msdn.microsoft.com/en-us/library/office/ms437502%28v=office.14%29.aspx
    Please don't forget to mark it answered, if your problem resolved or helpful.

  • How to call HR Macros in ABAP-Webdynpro

    HI all,
    I want to extract HR data in webdynpro view.
    Where should I give Logical Database PNP?
    The ifnotypes key word is not accepting in Webdynpro coding?
    Where should I give GET PERNR event in Webdynpro?
    When I use RP_PROVIDE_FROM_LAST .... says error message
    Statement "RP_PROVIDE_FROM_LAST" is not defined. Check your spelling .
    How to use the Macros in Webdynpro (VIEW) methods.
    First time I'm working in ABAP-HR Webynpro.
    Please help me out..
    Thanks,
    Prasad

    Hi,
    How did u  solve this? pls provide the solution.
    Regards,
    Lakshmi.

  • Calling HR Macros in ABAP-Webdynpro

    HI all,
    I want to extract HR data in webdynpro view.
    Where should I give Logical Database PNP?
    The ifnotypes key word is not accepting in Webdynpro coding?
    Where should I give GET PERNR event in Webdynpro?
    When I use RP_PROVIDE_FROM_LAST .... says error message 
    Statement "RP_PROVIDE_FROM_LAST" is not defined. Check your spelling .
    How to use the Macros in Webdynpro (VIEW) methods.
    First time I'm working in ABAP-HR Webynpro.
    Please help me out..
    Thanks,
    Prasad

    Hi,
    I suspect that you are in a right forum. Please post it to appropriate forum.

  • Can I launch a Macro from an IF statement in a Bus. Rule?

    I am trying to write IF logic in a business rule to run a macro based on a Planning form-driven variable. However, my rule will not validate. For example:
    IF([variable] == 'Budget')
    %MYBUDGETMACRO(parm1, parm2, parm3);
    ELSE
    %MYOTHERMACRO (parm1, parm2, parm3);
    ENDIF
    Is it possible to do this? Thank you -

    I wrote this used-to-make-sense-but-now-just-tests-a-concept code (coming to a blog post soon, oooh, I know you can hardly wait): <--Sarcasm
    FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])
         /*     Call macro to do focused Aggregation     */
         "Local"
              IF(@ISMBR("Local"))
                   "Local" = #Missing ;
              ENDIF
    ENDFIX /*     FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])     */And it validated just fine.
    So I created a one line macro that has this code:
    "Local" = Missing ;And then called it in an IF statement:
    FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])
         /*     Call macro to do focused Aggregation     */
         "Local"
              IF(@ISMBR("Local"))
                   %mcrConsHBRLocalEqualsMissing()
              ENDIF
    ENDFIX /*     FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])     */HBR won't even let me validate it but throws an:
    Encountered " <MACRO> "%
    mcrConsHBREqualsMissing "" at line 19, column
    35
    blah
    blah
    blah
    If I get rid of the IF statement and just do this:
    FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])
         /*     Call macro to do focused Aggregation     */
         "Local"
              %mcrConsHBRLocalEqualsMissing()
    ENDFIX /*     FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])     */It still fails.
    So then I wrote this:
    FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])
         /*     Call macro to do focused Aggregation     */
         %mcrConsHBRLocalEqualsMissing()
    ENDFIX /*     FIX("Local", [varGlblYear], [varGlblScenario], [varGlblVersion])     */Sucess!!! Boil in bag! (That's a Network54 joke, btw.)
    So the issue isn't the IF statement, it's the calc block. You cannot insert macros into calc block statements. And since a calc block statement is required for using IF, a macro can't be used within an IF.
    Regards,
    Cameron Lackpour

  • Urgent help needed on Macros

    Hi APO Gurus...
    I want to know how to use Drill_Up and Drill_ Down macros in batch jobs. they work beautifully in interactive mode, but when processed in batch jobs they drill up only for the particular CVC's at the aggregated level specified in the job. We are  selecting all the characteristics in the aggregation level while creating the job. Then we want to drill up on particular characteristic. We are using a collective macro with first macto for drill up and second macro for calculations at the aggregated level. It works fine in interactive mode but drill_up doesnt seem to work in batch jobs.
    Help needed

    Hi,
    You should not be using DRILL_UP and DRILL_DOWN functions in background jobs. Whatever processing you need to do after DRILL_UP should be a separate macro and that should be executed in background at the desired aggregation level (set for the job).
    There is no point in using a collective macro with a DRILL_DOWN, processing and DRILL_UP steps in background job.
    Thanks,
    Somnath

  • Difference between bex user exit and macros in functionality?

    Hi all,
    I need to create a report on material master data. I created an infoset on 0material and 0mat_plant. In the requirem
    ent, I have a report containing different material numbers followed by attributes in each row. the final column in each
    row should be calculated using logic. the logic involves comparing different row values and arrive at final conclusion.
    the logic comprises of large number of if conditions. so should i use bex user exit or excel macros?
    what is the difference between user exit and macros in funcitonalilty?
    is there an issue transporting the macro to Prod for end users to use?
    any performance criteria?
    Any how to documents ..will be of a lot of help
    plz send them to [email protected]
    Message was edited by:
            ravi a

    Hi,
    Macros offer a powerful and flexible way to extend the features of MS Excel. You can either create a macro using VB code or Record a macro. Use Alt+F11 for creating macro using VB code.
    You can refer to Microsoft help site or this link for more details:
    http://www.taltech.com/support/sw_tricks/exmacros.htm
    User-exits are empty subroutines that SAP Developers have provided for you.You can fill them with your own source code.Technically this is a modification.Customer exits are nothing but a include in customer name space will be provided in the function module which starts with CALL CUSTOMER.You can fill them with your own source code.Technically this is an enhancement.
    look into following links for procedure to find and use user-exits transaction for finding user-exits is 'SMOD'
    http://www.sapbrain.com/TUTORIALS/TECHNICAL/user_exits_tutorial.html
    http://www.sap-img.com/abap/a-short-tutorial-on-user-exits.htm

  • How to upload data from excel to SAP using VB script or Macros

    Hi Guys,
    I want to make a macro enabled Excel sheet which  i can use to upload huge data on SAP . I read some discussion but didnt get anything. Please help me with a step by step document.

    Hi,
    Please refer below link.
    Need help from Excel and SAP expert! [SOLVED]
    http://visualbasic.ittoolbox.com/groups/technical-functional/vb-vba-l/call-transaction-in-sap-from-excel-vba-macro-and-download-alv-list-object-results-to-spreadsheet-3335996
    Regards,
    Rafi

  • VB Macro in Bex Analyser is taking long time to complete execution

    Hi Experts,
    In a FI query , we have a VB macro which update the excel sheets by taking values from the previous excel sheets .
    The issue is its taking long time for query execution and if we are keep on pressing 'ENTER' button . The query is running very fastly and is giving the results ,but its not a correct way to do.
    Its a critical issue in Production and can anyone help me to resolve the issue.
    Regards,
    Anju

    Hi Anju,
    I need to create a VB macro in one of my query but i not familiar how i can plug the VB code into the query.
    Please can you give me some basic procedure on how to do that?
    What i need to do exactly is to bring a KF from a query into another query. Not sure if this is possible using VB.
    Let me know.
    Thanks.
    Cesar

  • EXCEL spreadsheet with MACROS

    WILL NUMBERS 2009 SUPPORT AN EXCEL SPREADSHEET WITH EMBEDDED MACROS?

    Looks like Excel will get macros back. This is from Wikipedia:
    Microsoft has announced that the Mac OS X version will also be released in 2010. Microsoft Office 2011 for Mac will include more robust enterprise support and greater feature parity with the Windows edition. An all-new version of Outlook with full Exchange support will return to the Mac for the first time since 2001 and replace Entourage[47], and Visual Basic for Applications (VBA, aka "macro" support) will return after being dropped in Office 2008[48][49]. There is no public beta for the Mac version,[50] however, a copy of Beta 2 (Build 14.0.0.100326) has been circulated among many Mac file sharing websites. [51]

Maybe you are looking for