Microsoft Office Mac 2011 Compile Error Method Or Data

Method 1: Enable the database for the current session. When you use this method, Access 2007 enables the database until you close the database. To enable the database for the current session, follow these steps: On the Message Bar, click Options. In the Microsoft Office Security Options dialog box, click Enable this content, and then click OK. Problem: When using the VBA Code or Macros in Microsoft Access or Excel, the following errror is received “Compile Error: Can’t find project or library”. Tech support scams are an industry-wide issue where scammers trick you into paying for unnecessary technical support services. You can help protect yourself from scammers by verifying that the contact is a Microsoft Agent or Microsoft Employee and that the phone number is an official Microsoft global customer service number. I upgraded to Office 11 from Office 04 on 4 iMacs in a department in my environment. Unfortunately one installation went bad on the director's machine, which fails to close properly and constantly gets the error- Compile Error: Method or data member not found. Searching around on Google, I. I am trying to run a script written for Excel 2010 on my Mac running Excel 2011. NormSDist in Mac Excel 2011 Compile error: Method or data member not found.

-->

Find out how the 32-bit version of Office is compatible with the 64-bit version of Office.

Returns the depreciation for each accounting period. This function is provided for the French accounting system. If an asset is purchased in the middle of the accounting period, the prorated depreciation is taken into account. The function is similar to AMORLINC, except that a depreciation coefficient is applied in the calculation depending on the life of the assets. Nov 07, 2011  Hello all, So I'm building an access database in Access 2010 to manage my students and I'm attempting to create a form which has two listboxes. LstClass has a list of classes which is populated by a table. LstStd has a list of students which is populated in code by SQL, based on the selection. Even if you've only got a single column of data in.

Free microsoft word equivalent for mac. Office applications are available in 32-bit and 64-bit versions.

The 64-bit versions of Office enable you to move more data around for increased capability, for example when you work with large numbers in Microsoft Excel 2010. When writing 32-bit code, you can use the 64-bit version of Office without any changes. However, when you write 64-bit code, you should ensure that your code contains specific keywords and conditional compilation constants to ensure that the code is backward compatible with earlier version of Office, and that the correct code is being executed if you mix 32-bit and 64-bit code.

Visual Basic for Applications 7.0 (VBA 7) is released in the 64-bit versions for Office, and it works with both 32-bit and 64-bit applications. The changes described in this article apply only to the 64-bit versions of Office. Using the 32-bit versions of Microsoft Office enable you to use solutions built in previous versions of Office without further modifications.

Note

By default, when you install a 64-bit version of Office, you also install the 32-bit version is installed along with the 64-bit system. You must explicitly select the Microsoft Office 64-bit version installation option.

In VBA 7, you must update existing Windows API statements (Declare statements) to work with the 64-bit version. Additionally, you must update address pointers and display window handles in user-defined types that are used by these statements. This is discussed in more detail in this article as well as compatibility issues between the 32-bit and 64-bit versions and suggested solutions.

Comparing 32-bit and 64-bit systems

Applications built with the 64-bit versions of Office can reference larger address spaces than 32-bit versions. This means you can use more physical memory for data than before, potentially reducing the overhead spent moving data in and out of physical memory

In addition to referring specific locations (known as pointers) in physical memory, you can also use addresses to reference display window identifiers (known as handles). The size (in bytes) of the pointer or handle depends on whether you're using a 32-bit or 64-bit system.

If you want to run your existing solutions with the 64-bit versions of Office, be aware of the following:

  • Native 64-bit processes in Office cannot load 32-bit binaries. This is expected to be a common issue when you have existing Microsoft ActiveX controls and existing add-ins.

  • VBA previously didn't have a pointer data type, so you had to use 32-bit variables to store pointers and handles. These variables now truncate 64-bit values returned by API calls when using Declare statements.

VBA 7 code base

VBA 7 replaces the VBA code base in Office 2007 and earlier versions. VBA 7 is available in both the 32-bit and 64-bit versions of Office. It provides two conditional compilation constants:

  • VBA7 - Helps ensure the backward compatibility of your code by testing whether your application is using VBA 7 or the previous version of VBA.

  • Win64 Tests whether code is running as 32-bit or 64-bit.

With certain exceptions, the macros in a document that work in the 32-bit version of the application also work in the 64-bit version.

ActiveX control and COM add-in compatibility

Existing 32-bit ActiveX controls, are not compatible with the 64-bit versions of Office. For ActiveX controls and COM objects:

  • If you have the source code, generate a 64-bit version yourself.
  • If you don't have the source code, contact the vendor for an updated version.

Native 64-bit processes in Office cannot load 32-bit binaries. This includes the common controls of MSComCtl (TabStrip, Toolbar, StatusBar, ProgressBar, TreeView, ListViews, ImageList, Slider, ImageComboBox) and the controls of MSComCt2 (Animation, UpDown, MonthView, DateTimePicker, FlatScrollBar). These controls were installed by 32-bit versions of Office earlier than Office 2010. You'll need to find an alternative for your existing VBA solutions that use these controls when you migrate the code to the 64-bit versions of Office.

API compatibility

The combination of VBA and type libraries gives you lots of functionality to create Office applications. However, sometimes you must communicate directly with the computer's operating system and other components, such as when you manage memory or processes, when working with UI elements linke windows and controls, or when modifying the Windows registry. In these scenarios, your best option is to use one of the external functions that are embedded in DLL files. You do this in VBA by making API calls using Declare statements.

Note

Microsoft provides a Win32API.txt file that contains 1,500 Declare statements and a tool to copy the Declare statement that you want into your code. However, these statements are for 32-bit systems and must be converted to 64-bit by using the information discussed later in this article. Existing Declare statements won't compile in 64-bit VBA until they've been marked as safe for 64-bit by using the PtrSafe attribute. You can find examples of this type of conversion at Excel MVP Jan Karel Pieterse's website at https://www.jkp-ads.com/articles/apideclarations.asp.The Office Code Compatibility Inspector user's guide is a useful tool to inspect the syntax of API Declare statements for the PtrSafe attribute, if needed, and the appropriate return type.

Declare statements resemble one of the following, depending on whether you are calling a subroutine (which has no return value) or a function (which does have a return value).

The SubName function or FunctionName function is replaced by the actual name of the procedure in the DLL file and represents the name that is used when the procedure is called from VBA code. You can also specify an AliasName argument for the name of the procedure. The name of the DLL file that contains the procedure being called follows the Lib keyword. And finally, the argument list contains the parameters and the data types that must be passed to the procedure.

The following Declare statement opens a subkey in the Windows registry and replaces its value.

The Windows.h (window handle) entry for the RegOpenKeyA function is as follows:

In Visual C and Microsoft Visual C++, the previous example compiles correctly for both 32-bit and 64-bit. This is because HKEY is defined as a pointer, whose size reflects the memory size of the platform that the code is compiled in.

In previous versions of VBA, there was no specific pointer data type so the Long data type was used. And because the Long data type is always 32-bits, this breaks when used on a system with 64-bit memory because the upper 32-bits might be truncated or might overwrite other memory addresses. Either of these situations can result in unpredictable behavior or system crashes.

To resolve this, VBA includes a true pointer data type: LongPtr. This new data type enables you to write the original Declare statement correctly as:

This data type and the new PtrSafe attribute enable you to use this Declare statement on either 32-bit or 64-bit systems. The PtrSafe attribute indicates to the VBA compiler that the Declare statement is targeted for the 64-bit version of Office. Without this attribute, using the Declare statement in a 64-bit system will result in a compile-time error. The PtrSafe attribute is optional on the 32-bit version of Office. This enables existing Declare statements to work as they always have.

The following table provides more information about the new qualifier and data typeas well as another data type, two conversion operators, and three functions.

TypeItemDescription
Qualifier
PtrSafe
Indicates that the Declare statement is compatible with 64-bits. This attribute is mandatory on 64-bit systems.
Data Type
LongPtr
A variable data type which is a 4-bytes data type on 32-bit versions and an 8-byte data type on 64-bit versions of Microsoft Office. This is the recommended way of declaring a pointer or a handle for new code but also for legacy code if it has to run in the 64-bit version of Office. It is only supported in the VBA 7 runtime on 32-bit and 64-bit. Note that you can assign numeric values to it but not numeric types.
Data Type
LongLong
This is an 8-byte data type which is available only in 64-bit versions of Microsoft Office. You can assign numeric values but not numeric types (to avoid truncation).
Conversion Operator
CLngPtr
Converts a simple expression to a LongPtr data type.
Conversion Operator
CLngLng
Converts a simple expression to a LongLong data type.
Function
VarPtr
Variant converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
Function
ObjPtr
Object converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).
Function
StrPtr
String converter. Returns a LongPtr on 64-bit versions, and a Long on 32-bit versions (4 bytes).

The follow example shows how to use some of these items in a Declare statement.

Note that Declare statements without the PtrSafe attribute are assumed not to be compatible with the 64-bit version of Office.

There are two conditional compilation constants: VBA7 and Win64. To ensure backward compatibility with previous versions of Microsoft Office, you use the VBA7 constant (this is the more typical case) to prevent 64-bit code from being used in the earlier version of Office. For code that is different between the 32-bit version and the 64-bit version, such as calling a math API that uses LongLong for its 64-bit version and Long for its 32-bit version, you use the Win64 constant. The following code shows the use of these two constants.

To summarize, if you write 64-bit code and intend to use it in previous versions of Office, you will want to use the VBA7 conditional compilation constant. However, if you write 32-bit code in Office, that code works as is in previous versions of Office without the need for the compilation constant. If you want to ensure that you are using 32-bit statements for 32-bit versions and 64-bit statements for 64-bit versions, your best option is to use the Win64 conditional compilation constant.

Using conditional compilation attributes

The following example shows VBA code written for 32-bit that needs to be updated. Notice the data types in the legacy code that are updated to use LongPtr because they refer to handles or pointers.

VBA code written for 32-bit versions

VBA code rewritten for 64-bit versions

Frequently asked questions

When should I use the 64-bit version of Office?

This is more a matter of which host application (Excel, Word, and so forth) you are using. For example, Excel is able to handle much larger worksheets with the 64-bit version of Microsoft Office.

Can I install 64-bit and 32-bit versions of Office side-by-side?

No.

When should I convert Long parameters to LongPtr?

You need to check the Windows API documentation on the Microsoft Developers Network for the function you want to call. Handles and pointers need to be converted to LongPtr. As an example, the documentation for RegOpenKeyA provides the following signature:

The parameters are defined as:

ParameterDescription
hKey [in]
A handle to an open registry key.
lpSubKey [in, optional]
The name of the registry subkey to be opened.
ulOptions
This parameter is reserved and must be zero.
samDesired [in]
A mask that specifies the desired access rights to the key.
phkResult [out]
A pointer to a variable that receives a handle to the opened key.

In Win32API_PtrSafe.txt, the Declare statement is defined as:

Should I convert pointers and handles in structures?

Yes. See the MSG type in Win32API_PtrSafe.txt:

When should I use strptr, varpt, and objptr?

You should use these functions to retrieve pointers to strings, variables and objects, respectively. On the 64-bit version of Office, these functions will return a 64-bit LongPtr, which can be passed to Declare statements. The use of these functions has not changed from previous versions of VBA. The only difference is that they now return a LongPtr.

Microsoft Office Mac 2011 Compile Error Method Or Data Sheet

See also

-->

Note

Office 365 ProPlus is being renamed to Microsoft 365 Apps for enterprise. For more information about this change, read this blog post.

Original KB number: 931407

Note

Microsoft office mac 2011 compile error method or data key

If you are a Small Business customer, find additional troubleshooting and learning resources at the Support for Small Business site.

Symptoms

When you run a macro that calls a Microsoft Visual Basic for Applications (VBA) function in a Microsoft Office Access 2007 database, you receive the following error message:

Microsoft Office Mac 2011 Compile Error Method Or Data Sheet

Action Failed
Macro Name: MacroName
Condition: Condition
Macro Name: RunCode
Arguments: Arguments
Error Number: 2950

Cause

This issue occurs if the database is not trusted by Access 2007. By default, Access 2007 opens databases that are not trusted in Disabled mode. In Disabled mode, executable content is disabled.

Resolution

If you trust the author of the Access 2007 database, and if you want to enable the database, use one of the following methods.

.Select Save File, and then OK.In the upper-right browser window, select Show all downloads. Why doesnt microsoft access work on mac. Office 2019 and Office 2016: Use the Activation Troubleshooter (non-subscription Office products)The Activation Troubleshooter runs on Windows PCs and can fix activation errors for Office Home & Student, Office Home & Business, Office Professional, and individual Office apps, like Visio, Project, Word, and Outlook.Select the Download button below.Select your browser from the drop-down list to see how to save and then launch the troubleshooter. Select Next and follow the prompts.If Office still won't activate after you run the Activation Troubleshooter, you can. In the Library, select Downloads officeact.diagcab, and then select the folder icon. Double-click the officeact.diagcab.The Activation Troubleshooter launches.

Method 1: Enable the database for the current session

When you use this method, Access 2007 enables the database until you close the database. To enable the database for the current session, follow these steps:

  1. On the Message Bar, click Options.
  2. In the Microsoft Office Security Options dialog box, click Enable this content, and then click OK.

Note

You must repeat these steps every time that you open the database.

Method 2: Move the database to a trusted location

To do this, follow these steps:

  1. Determine trusted locations to which you can move the database. To do this, follow these steps:

    1. Click the Microsoft Office Button, and then click Access Options.

    2. Click Trust Center, and then click Trust Center Settings under Microsoft Office Access Trust Center.

    3. Click Trusted Locations, and then use one of the following procedures:

      • Note the paths of the trusted locations that are listed.
      • Add a new trusted location. To do this, click Add new location, and then specify the path of the location that you want to add.
  2. Move the Access 2007 database to the trusted location that you want.

More Information

You can use an AutoExec macro to test whether a database is trusted when you open the database. Additionally, the macro can open a form that displays a customized message to users if the database is not trusted. This message lets users know that the database must be enabled or trusted for the code to run successfully.

To create the AutoExec macro and the form, follow these steps:

  1. Create a new form in Design view.

  2. Add a text box or a label to the form, and then type the information that you want to display to the user.

  3. Save and then close the form.

  4. Create a macro, and then name the macro AutoExec.

  5. Show the Conditions column.

  6. Type the following line in the Conditions column:

    CurrentProject.IsTrusted = False

  7. In the Actions column, click OpenForm.

  8. In the Form Name box under Action Arguments, click the form that you created in step 1.

  9. Save and then close the macro.

Microsoft Office Mac 2011 Compile Error Method Or Data List

When the database opens, the AutoExec macro starts and then tests theIsTrusted condition. If the database is not trusted by Access 2007, the macro opens the form that you specified in the 'OpenForm' action of the macro.

References

Microsoft Office Mac 2011 Compile Error Method Or Data Member Not Found

For more information, see the Help files in Access 2007. To do this, click Microsoft Office Access Help, type how database objects behave when trusted and untrusted in the Type words to search for box, and then click Search.