I've been working with this script to import and paste a webpage to a worksheet. Once the webpage is on a worksheet I can pull it into VBA easily enough but I was wondering if there's a way to "paste" the webpage directly into an array in VBA and skip the paste to worksheet step?
Code:
Set IE = CreateObject("InternetExplorer.Application")
With IE
.Navigate theURL
IE.Visible = False
End With
I was wondering if it's possible to unhide a row directly below one that is visible?
I am creating a template for users that allows them to choose which lines (rows) they would like to use. They then hit a button to hide all the other lines they don't wish to use.
For each row that is visible I then need the row directly below it to become visible so that the user can enter associated information.
I'm stumped on how to do it. I have the user entering "a" in column A for any row they wish to keep - but I'm not sure how to incorporate this into unhiding the row below (or if I'm on the wrong track with my thinking).
I'm attempting to import around 200 (and growing!) separate text files into Excel. I am using the formula below to import the text file and then using a separate macro to select the information I need, copy it into another spreadsheet, and then run the import macro again.
However, I have a problem in that my import macro gives me 'Run-time error '1004:
Application defined or user defined error''. At first this wasn't a problem as the information is pasted into the spreadsheet despite the error anyway. However, now that I am looping the macro it is obviously causing more problems as it prevents the loop. I would really appreciate it if anyone knows of a work-around or can spot an error in the coding to resolve this!
The code below shows is for the import macro only:
Sub ImportTextFile(FName As String, Sep As String)
Dim RowNdx As Long Dim ColNdx As Integer Dim TempVal As Variant Dim WholeLine As String Dim Pos As Integer Dim NextPos As Integer Dim SaveColNdx As Integer
How I can control many loops directly after each other. For example I have this script:
If (Cells(x, column) > 35 And Cells(r, column) < 25 Then
If (cells(x, 75) = "GotU") Then xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Else
If (cells(x, 85) = "GotYah") Then xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx Else
If (cells(x, 95) = "GotYou") Then xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx End if
Is this script correct if I want the loops to check all data that I write (for ex. GotYou, GotYah etc.) or do I need to end every if before next if? I want that the loops makes all 3 controls.
I have developed an extensive program running on excell but with the user only seeing userforms. I would now like to build in a "print screen" button, but have no idea how to do this.
What it needs to do is capture the userform and all its entries (as it is displayed on the screen) and send this to the printer to be printed as a picture. I am assuming that there must be code available so that when ever the user clicks this button, the standard windows (or excell) print screen appears from which he will be able to choose the printer etc.
I have found some code that allows me to email directly from within a workbook, but the example only contains one addressee, I wish to send to 3 or 4 different addresses, these addresses would remain constant once entered. How do I alter the code?
Sub sendactiveworkbook() ActiveWorkbook.SendMail _ Recipients:="type-in-email-address", _ Subject:="New Quote Raised - Test Transmission " & Format( Date, "dd/mmm/yy") End Sub
Is there any way to refer to a cell that is directly to the left of the current cell?
I need to create a Comma-Separated Value file with the Excel formula in the CSV file. Because of this, I do not know the current cell location, but want to do something like =(Cell directly to the left of me) + (Cell two cells to the left of me)
I have an excel file with about 200 images! This increases the filesize too much. So, I want to (if possible) have all the 200 images in different files, but still show all the pictures directly in Excel like before, without having the directly imported into excel. So, easy explained: I want to show a picture directly in excel that is in another file without having the picture increasing the filesize as before! How can i do this??
Lets say we have prices in column (B) and in column (F) I want to insert a formula that says:
In the same row, look at cell in column (B). If price is between 1000 and 8000 then put 2.00 if price is between 500-999 then put 0.50 if price is between 1-499 then put 0.00
I need to achieve this using something like =OFFSET(INDIRECT(ADDRESS(ROW(), COLUMN())),0,-1) but I am not sure how its done.
I will be using this formula in a find and replace macro. So I can NOT make the typical drag and fill formula.
I want to thank you all for the solutions/support I received in completing my (for me) difficult workbook.
I still have a tricky problem. In the example below, can Multibeep "know" when it is being called from Beep versus being excuted directly? And if so can I direct a different sequence?
I have a large number of webpages represented by live hyperlinks in a worksheet. I need to save the webpages either as html or prefereably as text files. My current option is to save the worksheet as a html file, open the saved html file in Opera and manually right click and save these webpages to the download folder. This will save the webpage without opening it in a new window or tab.
I would like to write a macro that automatically moves vertically from cell to cell and saves the webpage without opening a browser and requires no user interaction.
I need to know the commands to have the macro read the hyperlink in the cell, got to the website and save it to a location on the local hard drive using a differently numbered filename (file1.txt, file2.txt etc)
There is no problem if a webbrowser needs to open and close as long it is done automatically and controlled by the excel macro.
I'm having trouble creating a hyperlink that will automatically take a value from a cell and link me directly to a file of the same name across the company server.
For example in column B I have a number along the lines of
43FG2345678
In a folder on the server I have a word document that goes by that exact file. I need to create a hyperlink that looks up that value and searches for that specific document in the location file, and then directly open that file.
The value in column B will change with each line so as I copy the formula/hyperlink down I want it to automatically go in and replace the text and then lookup the file.
I have tried the concatenate function within the hyperlink but not had much luck.
I have the following code that will go down through column "L", look for the value "ATS", and if found will move it to the right 1 cell. this works find,
My need is to also move the 2 cells directly below the cell containing "ATS", then clear the contents of the "Original" 3 cells before going to find the next instance of "ATS".
Sub Move_Values() Dim myrange, cell As Range Set myrange = ActiveSheet.Range("L4", Range("L5000").End(xlUp)) For Each cell In myrange If InStr(cell.Value, "ATS") > 0 Then cell.Offset(0, 1).Value = cell.Value cell.ClearContents End If Next cell End Sub
I am playing around with code to extract stock prices from Yahoo! Finance.
The data is extracted from Yahoo in the form of a CSV string, for example:
"HSBC HLDG",596.80,"-0.22%"
I've written code to split the string into cells as I'd like, but just realised that if I copy the above text manually from the Immediate Window (on the back of a Debug.Print) and paste it anywhere on the worksheet Excel automatically splits the string and reformats the values.
Although my code works perfectly I was wondering whether there is a shorter way of doing this, i.e. by just coding up the above action? I've tried a few routes but haven't found a solution yet.
I have a large number of webpages represented by live hyperlinks in a worksheet. I need to save the webpages either as html or prefereably as text files. My current option is to save the worksheet as a html file, open the saved html file in Opera and manually right click and save these webpages to the download folder. This will save the webpage without opening it in a new window or tab.
I would like to write a macro that automatically moves vertically from cell to cell and saves the webpage without opening a browser and requires no user interaction. I need to know the commands to have the macro read the hyperlink in the cell, got to the website and save it to a location on the local hard drive using a differently numbered filename (file1.txt, file2.txt etc)
There is no problem if a webbrowser needs to open and close as long it is done automatically and controlled by the excel macro.
I have a macro which creates 4 worksheets. Unfortunately sometimes they are named by default "Sheet5", "Sheet6", "Sheet7", and "Sheet8" when the macro is set to "Sheet1", "Sheet2", "Sheet3", "Sheet4". My question, is there a way to rename the sheets directly after creating them so that the sheet in the very first position in the spreadsheet is named "Sheet1" (the same would go for sheets 2-4). The code below wont work if the sheet decides to be a name other then "Sheet5" so how do I point to the the worksheet known as Sheet5 without using its name and tell excel I want its default to be "Sheet1"?
how does one alter a variable without referring to it directly? Eg. One has a combo box (CboPNum) with values from 1 to 20 and textboxes (TxtN1 to TxtN20). Upon selecting a value from the CboPNum dropdown, the background of the corresponding TextBox should be changed. I’ve tried to create something that joins the string “TxtN” and the CboPNum value:
ThisTextBox = “TxtN” & CboPNum.Value ThisTextBox.Background = Black
But this quite correctly gives the error “Object required”… What do you guys recommend?
I've populated a temporary worksheet with several columns of data. In this example my Amount Column has several null cells. What I need to do is write a macro to find any nulls and populate the nulls with the data in the last populated cell above it.
Example: the four empty cells below Account (524150) also need to be populated with 524150. The cell immediately below 524200 also needs to be populated with 524200 and the 3 empty cells below 512800 also need to be populated with 512800. Week to week the number of rows will change and the nulls will also change.
I am working on a macro that runs when a combobox is clicked. The combobox is imbedded directly in the worksheet, not in a form.
Basically, the user clicks the down arrow on the combobox, selects one of the available choices, and the choice selected is written to the spreadsheet - each time the selection is made, it is written to a successive row in the spreadsheet - keeping track of every selection made.
The macro works, mostly. But problem is that if the user repeats a selection in the combobox (makes a choice, and then in the next cycle makes the same choice) the macro doesn't run - nothing happens.
Here is the code:
Private Sub ComboBox1_Change() i = Cells(2, 4) ' value in cell D2 Cells(i, 6) = Cells(4, 9) ' selected value from cobobox stored in cell I4 ' This value copied to column F - successive rows i = i + 1 ' counter to increment row for next value Cells(2, 4) = i ' Update cell D2 with new i value End Sub
I need to have 3 arrays for a column of data, the first holding each cell value, the second the Row number and the third, the Interior.Color.
Currently I am having to assign each row and interior colour to a variable with a | between each then use the split function on that variable to assign it to an array (no problem with each cell value as that can be assigned directly to an array.
Code: For Each rC In Range("a2", Range("a" & Rows.Count).End(xlUp)).SpecialCells(12) If sO = Empty Then sO = rC.Interior.Color Else: sO = sO & "|" & rC.Interior.Color End If If sR = Empty Then sR = rC.Row Else: sR = sR & "|" & rC.Row End If Next c = Split(sR, "|") v = Split(sO, "|") x = Range("a2", Range("a" & Rows.Count).End(xlUp)).SpecialCells(12).Value
As there are over 10,000 rows involved loading the variables is taking a considerable amount ot time, whereas the direct loading of the value is very fast. So I want to be able to load all arrays directly.
I have tried various methods to get Row and Interior.Color to load directly into arrays c and v but without success so far.
I am trying to add new worksheets at the end of the existing ones, with the name "Scenario " & i (i being an integer for the next scenario).
My idea is to parse the Worksheet names, counting how many times the string "Scenario " appears, and then add a new Worksheet with that name and index i+1. Here is the
Public Sub store_data_Click()
Dim NameWS, prev_sheet As String Dim iprev, iws, iscenario As Integer
iscenario = 1 For iws = 1 To Worksheets.Count If Find(Sheets(iws).Name, "Scenario ") = True Then iscenario = iscenario + 1 End If
1.- Find (8th line) does not seem to be the right procedure to use; how could I do this in a clean/direct (i.e. not writing the names into a dummy worksheet and using the find function) way?
2.- How could I substitute the new Worksheet ("Scenario " & i) formulas for values without having to select all the cells and then use paste values (not so elegant).
3.- Connecting to a previous post: How could I define *exactly* the position to paste "Autoshape 1"?
I would like to do is in cell B8, copy each row of text to a newly inserted line below. The highlighted cells in yellow have been done manually as an example. I have about 50 groupings of these to do manually. I'm making an effort to learn VBA.