MS Office Forum / Word / Mailmerge and Fax / June 2005
danish letters
|
|
Thread rating:  |
bilisa - 23 Jun 2005 11:01 GMT Hi
Im having problems when I merge my document / template with a .csv data source. My data source is already attached to the template via some vba script. I have some translation problems when the data posts contain danish letters as Ø,ø,æ,Æ,å, Å. Some times they disappear and sometimes they turn into asian symbols in the merged letter. They open correctly in Excel but are not displayed correctly in the merged letter.
This is my code:
Dim myheader As String
filnavn = "C:\FLETFIL.CSV"
With ActiveDocument.MailMerge
.MainDocumentType = wdFormLetters
.OpenDataSource _ Name:=filnavn, _ Connection:="Entire Spreadsheet", _ SubType:=wdMergeSubTypeWord2000
' Do it .Destination = wdSendToNewDocument .Execute End With
What is wrong with it? Any help is appreciated.
Yours sincerely
Peter Jamieson - 23 Jun 2005 17:55 GMT I suggest you try the following instead, but use the pathname of the folder containing your text file instead of "c:\myfiles", and if necessary, change the name of the ODBC DSN in the connection parameter to match the name of a Text Driver DSN on your system.
.OpenDataSource _ Name:=filnavn, _ Connection:="DSN=Delimited Text Files;DBQ=c:\myfiles;DriverId=27;FIL=text;MaxBufferSize=2048;PageTimeout=5;", _ SQLStatement:="SELECT * FROM " & filnavn
Peter Jamieson
> Hi > [quoted text clipped - 30 lines] > > Yours sincerely bilisa - 23 Jun 2005 18:22 GMT This may sound as a stupid question: What is Text Driver DSN on system?
> I suggest you try the following instead, but use the pathname of the folder > containing your text file instead of "c:\myfiles", and if necessary, change [quoted text clipped - 44 lines] > > > > Yours sincerely Peter Jamieson - 23 Jun 2005 18:45 GMT It is something you have to have to use an ODBC (Open DataBase Connectivity) data source.
Word can read a text data source using a number of different methods, including a. its own internal text converter b. ODBC c. OLEDB d. indirectly, e.g. using Excel (the method you were using)
All these methods suffer from various problems, but in this case I believe the ODBC method is most likely to work. However, it does require that you have ODBC on your system, which I believe you will have by default. if you do not, and you need to distribute your solution, other approaches begin to look better, But to check, go into Windows Control Panel and look for Performance and Maintenance|Administrative Tools|Data Sources (ODBC), or just Administrative Tools|Data Sources (ODBC), and look in the User DSN tab for "Delimited Text Files". if you do not see it, click Add, find Microsoft Text Driver, fill in the details, and take it from there.
Peter Jamieson
> This may sound as a stupid question: What is Text Driver DSN on system? > [quoted text clipped - 51 lines] >> > >> > Yours sincerely bilisa - 23 Jun 2005 19:02 GMT I followed your instructions, but I still have the same problem. It seems to me that this is some sort of conversion problem. Any ideas?
> This may sound as a stupid question: What is Text Driver DSN on system? > [quoted text clipped - 46 lines] > > > > > > Yours sincerely Peter Jamieson - 23 Jun 2005 20:26 GMT Sorry, my mistake. I still think it can be done, but right now I can only check with Word 2003, which sometimes behaves in a slightly different way. Apologies in advance if neither of these suggestions work:
ActiveDocument.MailMerge.OpenDataSource Name:="", _ Connection:="DSN=Delimited Text Files;DBQ=C:\;DriverId=27;FIL=text;MaxBufferSize=2048;PageTimeout=5;", _ SQLStatement:="SELECT * FROM " & filnavn, _ SubType:=wdMergeSubTypeOther
or perhaps just
ActiveDocument.MailMerge.OpenDataSource Name:="", _ Connection:="DSN=Delimited Text Files;DBQ=C:\;DriverId=27;FIL=text;MaxBufferSize=2048;PageTimeout=5;", _ SQLStatement:="SELECT * FROM " & filnavn
It is certainly a conversion problem, but a. if you try to open the file as a "text file" (you can see a bit more of what is going on if you check Word Tools|Options|General|Confirm conversion at open before opening the file manually) you will probably see the oriental characters or a dialog asking about the character set b. if you try to use OLEDB, usually you see a dialog asking for the text (field) delimiter, and you may also see a character encoding dialog
Peter Jamieson
>I followed your instructions, but I still have the same problem. It seems >to [quoted text clipped - 57 lines] >> > > >> > > Yours sincerely bilisa - 23 Jun 2005 22:07 GMT I tried with your suggestions, but same result.. hope we can crack this one :)
> Sorry, my mistake. I still think it can be done, but right now I can only > check with Word 2003, which sometimes behaves in a slightly different way. [quoted text clipped - 86 lines] > >> > > > >> > > Yours sincerely Peter Jamieson - 24 Jun 2005 00:27 GMT OK, I managed to check some things on a WordXP system again. Can you try the same as before, but use
wdMergeSubtypeWord2000 instead of wdMergeSubtypeOther
?
(That's what I thought it should be under Word 2002 but it didn't seem to work under Word 2003)
Another ODBC is to create a file DSN and use that to access the file. You can create a file DSN in the ODBC Administrator we looked at earlier, but you can also do it in Wordpad as long as you know the exact name of the Driver (it's the name that appears in the list when you create a new DSN in ODBC).
For example, create the following file in Notepad and save it as c:\filedsns\mydsn.dsn
[ODBC] DRIVER=Microsoft Text Driver (*.txt; *.csv) PageTimeout=5 MaxBufferSize=2048 FIL=text DriverID=27
Then use this code:
.OpenDataSource _ Name:="c:\filedsns\mydsn.dsn", _ Connection:="FILEDSN=c:\filedsns\mydsn.dsn;", _ SQLStatement:="SELECT * FROM ktext.text", _ SubType:=wsMergeSubTypeWord2000
That's my last attempt for tonight!
Peter Jamieson
>I tried with your suggestions, but same result.. hope we can crack this one >:) [quoted text clipped - 100 lines] >> >> > > >> >> > > Yours sincerely bilisa - 23 Jun 2005 22:23 GMT The strange thing sbout it is that I have two .csv data files both containing ø,æ,å etc. and have the same structure, but they behave differently when merged with the same document!?!?!
> Sorry, my mistake. I still think it can be done, but right now I can only > check with Word 2003, which sometimes behaves in a slightly different way. [quoted text clipped - 86 lines] > >> > > > >> > > Yours sincerely Peter Jamieson - 23 Jun 2005 22:59 GMT That would not surprise me if the encoding was different (e.g. one is encoded using Unicode and the other using Windows/ANSI). You can test some of that by opening the file in Notepad and saving it using the different encodings Notepad supports - or you can open in Word and save as encoded text.
Peter Jamieson
> The strange thing sbout it is that I have two .csv data files both > containing [quoted text clipped - 102 lines] >> >> > > >> >> > > Yours sincerely bilisa - 23 Jun 2005 23:40 GMT I changed the encoding from ANSI to Unicode which solved the problem. So now I have located the problem. Next how to sove it with vba when doing a mailmerge. Alternatively I can export my files using unicode encoding, but I dont know if its possible..
> That would not surprise me if the encoding was different (e.g. one is > encoded using Unicode and the other using Windows/ANSI). You can test some [quoted text clipped - 110 lines] > >> >> > > > >> >> > > Yours sincerely Peter Jamieson - 24 Jun 2005 00:29 GMT If you use Unicode I don't think the ODBC approach will work properly, BTW. But I'm not completely sure.
Peter Jamieson
>I changed the encoding from ANSI to Unicode which solved the problem. So >now [quoted text clipped - 128 lines] >> >> >> > > >> >> >> > > Yours sincerely bilisa - 24 Jun 2005 09:54 GMT Maybe I can open my file (during mailmerge) and save it with the proper encoding.. Something like this:
Documents.Open FileName:=filnavn, _ Encoding:="Unicode" Documents.Save Documents.Close
> If you use Unicode I don't think the ODBC approach will work properly, BTW. > But I'm not completely sure. [quoted text clipped - 133 lines] > >> >> >> > > > >> >> >> > > Yours sincerely Peter Jamieson - 24 Jun 2005 10:16 GMT What I meant was that even if your data source is a Unicode Text file, you may not avoid the encoding dialog that pops up when you open a file. However, if you save as a Word document then use that as a data source, I think you will be OK - if the data source is large, just be prepared for a slow start to the merge.
Some sample conversion macros...
Sub ConvertToUTF8() ' convert to a UTF8 format text file
' Needs error checking etc. Dim oDoc as Word.Document
' change msoEncodingWestern to be the encoding you need. I think this should work.
Set oDoc = Documents.Open("the path name of the file you need to convert.txt", _ False, , False, , , , , , _ wdOpenFormatEncodedText, _ msoEncodingWestern, _ False, False, , True)
' Several of the parameters here are optional or ' irrelevant - you can probably remove the lines from ' ReadOnlyRecommended to SaveAsAOCLetter
oDoc.SaveAs _ FileName:="the path name of the file to convert to.txt", _ FileFormat:=wdFormatUnicodeText, _ AddToRecentFiles:=False, _ ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, _ SaveFormsData:=False, _ SaveAsAOCLetter:=False, _ Encoding:=msoEncodingUTF8, _ InsertLineBreaks:=False, _ AllowSubstitutions:=False, _ LineEnding:=wdCRLF
oDoc.Close Savechanges:=False Set oDoc = Nothing End Sub
or
Sub ConvertToWord() ' convert to a Word document file
' Needs error checking etc. Dim oDoc as Word.Document
' change msoEncodingWestern to be the encoding you need. I think this should work.
Set oDoc = Documents.Open("the path name of the file you need to convert.txt", _ False, , False, , , , , , _ wdOpenFormatEncodedText, _ msoEncodingWestern, _ False, False, , True)
' Several of the parameters here are optional or ' irrelevant - you can probably remove the lines from ' ReadOnlyRecommended to Encoding
oDoc.SaveAs _ FileName:="the path name of the file to convert to.doc", _ FileFormat:=wdFormatDocument, _ AddToRecentFiles:=False, _ ReadOnlyRecommended:=False, _ EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, _ SaveFormsData:=False, _ SaveAsAOCLetter:=False, _ Encoding:=msoEncodingUTF8, _ InsertLineBreaks:=False, _ AllowSubstitutions:=False, _ LineEnding:=wdCRLF
oDoc.Close Savechanges:=False Set oDoc = Nothing End Sub
Peter Jamieson
> Maybe I can open my file (during mailmerge) and save it with the proper > encoding.. Something like this: [quoted text clipped - 154 lines] >> >> >> >> > > >> >> >> >> > > Yours sincerely bilisa - 24 Jun 2005 10:52 GMT Thank you Peter :)
> What I meant was that even if your data source is a Unicode Text file, you > may not avoid the encoding dialog that pops up when you open a file. [quoted text clipped - 242 lines] > >> >> >> >> > > > >> >> >> >> > > Yours sincerely
|
|
|